¿Estás buscando una forma de mostrar u ocultar widgets en páginas específicas de WordPress? Si bien probablemente exista un plugin para esto, hemos creado un fragmento de código rápido que puedes usar para mostrar u ocultar widgets en páginas específicas de WordPress.
Lo primero que necesitarás hacer es obtener el nombre del ID del widget que deseas definir. Puedes hacer esto viendo el código fuente de la página o usando una herramienta de inspección web para ver el ID del widget. El ejemplo actual está configurado para mostrar solo el widget principal de 'páginas' en la página de contacto. No olvides que `is_page` también acepta una matriz de nombres y/o IDs de página.
Instrucciones:
Todo lo que tienes que hacer es agregar este código al archivo functions.php de tu tema o a un plugin específico del sitio:
add_filter( 'widget_display_callback', 'hide_widget_pages', 10, 3 );
function hide_widget_pages( $instance, $widget, $args ) {
if ( $widget->id_base == 'pages' ) { // change 'pages' to widget name
if ( !is_page( 'contact' ) ) { // change page name
return false;
}
}
}
Nota: Si es la primera vez que agregas fragmentos de código en WordPress, consulta nuestra guía sobre cómo agregar fragmentos de código correctamente en WordPress, para que no rompas accidentalmente tu sitio.
Si te gustó este fragmento de código, considera echar un vistazo a nuestros otros artículos en el sitio como: 30 formas de ganar dinero con blogs en línea y cómo crear un formulario de WordPress con un selector de fecha.
¡Me encanta este fragmento de tutorial, gracias!
Desafortunadamente, recibí 2 advertencias:
array_merge(): El argumento #2 no es un array
array_merge(): El argumento #1 no es un array
sin embargo, sí eliminó las barras laterales de la página condicional, incluso con errores.
Todavía estoy aprendiendo PHP y no estoy seguro de cómo incluir el array $args, si pudieras aconsejarme... sería maravilloso.
También me pregunto si hay una forma de eliminar 1 (uno) o más widgets específicos, de una barra lateral especificada sin eliminar todos.
de cualquier manera, gracias por publicar este fragmento <3
¿Estás agregando un array al fragmento?
Hola 🙂
Tu código me funcionó en todas las páginas de WordPress, pero este código no me funcionó en la página de la tienda WooCommerce. Tengo un widget básico de barra de búsqueda de productos en la cabecera de cada página, pero solo quiero que esté en la página de la TIENDA. Mi ID de página de tienda de WooCommerce es 552, así que usé este código:
add_filter( ‘widget_display_callback’, ‘hide_widget_pages’, 10, 3 );
function hide_widget_pages( $instance, $widget, $args ) {
if ( $widget->id_base == ‘woocommerce_product_search’ ) { // change ‘pages’ to widget name
if ( !is_page( ‘552’ ) ) { // change page name
return false;
}
}
}
Cuando agrego otro ID de página como la página 'Acerca de nosotros', cuyo ID es 551... si configuro este ID, tu código ocultará la barra de búsqueda de productos en todos los sitios excepto en la página 'Acerca de nosotros'. Pero cuando escribo el ID de la página de la TIENDA, que es 552, la barra de búsqueda desaparece de todas las páginas, incluso de la página de la tienda de WooCommerce. ¿Puedes ayudarme por favor? ¡Muchas gracias! :)
Quizás quieras verificar que 552 sea el ID correcto. Si lo es, podrías contactar al soporte de WooCommerce.
¿Podrías indicarme cómo cambiar el fragmento de código para poder ocultar varios widgets en páginas específicas?
¡Genial Joel! Estaré esperando ver más de lo que has estado trabajando.
Código muy útil. Gracias por compartir.
De nada Sajan, Joel Worsham va a contribuir a wpsnipp.com, así que estoy seguro de que tendrá muchos fragmentos de código geniales próximamente.
Me gusta. Gracias por compartir.
Ahorra la instalación de otro plugin.
Muy cierto brad, ¡un fragmento de código agradable y simple!