¿Cómo puedo mostrar un menú solo en ciertas páginas?

20 jun 2014, 10:41:50
Vistas: 70.5K
Votos: 11

En lugar de usar widgets de barra lateral para indicar en qué página deberían ser visibles, me gustaría elegir en la configuración del menú que aparezca en páginas específicas.

Forma predeterminada de WordPress:

Aspecto predeterminado de la configuración del menú en WordPress

Así, "proyectos" es una página y tiene algunas subpáginas. Pero ¿qué pasa si tengo como 10 páginas más y subpáginas con la misma situación?

Me gustaría agregar una configuración adicional (una lista de las páginas de nivel superior):

Ubicación deseada para la nueva configuración del menú

Pero no puedo encontrar ninguna documentación, acciones, filtros, etc., sobre cuándo se cargan estas configuraciones.

6
Comentarios

Creo que depende de tu tema. Pero como punto de partida, http://codex.wordpress.org/Navigation_Menus ¡debería ayudarte!

sri sri
20 jun 2014 11:00:46

He visto ese enlace muchas veces, no hay información sobre cómo añadir configuraciones a un menú. Solo crear y mostrar un menú personalizado...

User User
20 jun 2014 11:01:56

Uf. Creo que esa es una opción nativa de Joomla, aparentemente no está en WordPress. Para tu sitio, podrías crear archivos category/pages.php personalizados para la salida y luego añadir un menú personalizado único ahí, pero sería un verdadero dolor de cabeza. Tendrías cuatro archivos .php de salida y cuatro menús únicos, uno para cada selección mencionada. Una forma fácil de implementarlo es usar widgets de barra lateral como tu herramienta de navegación principal. La herramienta de widget de menú personalizado es bastante simple. Crea un menú para cada página, asumiendo que tienes plantillas únicas para cada una. Nota: "barra lateral" no es la mejor palabra. Puedes colocar un widget en cualquier lugar.

zipzit zipzit
20 jun 2014 11:10:32

Soy consciente de las barras laterales y los widgets. Esas pequeñas partes del sitio web que tampoco están conectadas a una página. No quiero usar barras laterales ni widgets y los he desactivado porque no uso ninguno de ellos. De todos modos, creo que las ubicaciones del menú son configuraciones del menú, no una configuración de un widget que contiene un menú.

User User
20 jun 2014 11:23:18

¿Tu pregunta es solo "¿Cómo agrego configuraciones personalizadas de menú?" o también es "¿Cómo uso configuraciones personalizadas de menú para mostrar un menú solo en ciertas páginas?"?

engelen engelen
20 jun 2014 15:47:02

Bueno, no sé cómo agregar una configuración personalizada de menú, así que ¿por qué mi pregunta sería cómo usar la configuración?

User User
20 jun 2014 15:55:24
Mostrar los 1 comentarios restantes
Todas las respuestas a la pregunta 7
1

Esa es una buena opción, pero estoy de acuerdo con sri, en este momento realmente depende de tu tema. Puedes hacer una solución alternativa a través de is_page(). Necesitas escribir algo como esto en el archivo page.php de tu tema:

<?php
    if (is_page('projects')) {
        if ( is_active_sidebar( 'sidebar-navigation' )) {
            dynamic_sidebar( 'sidebar-navigation' );
        }
    }
?>

Si deseas mostrar la barra lateral en otras páginas también, puedes usar la lógica or así:

if (is_page('projects') || is_page('home') || is_page('post-page'))
14 sept 2014 12:31:15
Comentarios

No conozco una solución mejor, pero esto es realmente una mala práctica en el mundo de la programación. Estoy pensando que al menos tal vez se podría iterar a través de un array o algo similar y luego realizar el intercambio de menú. Definitivamente agradezco la respuesta de todos modos. Suspiro

BRogers BRogers
4 feb 2016 08:55:23
0

Así es como puedes hacerlo en el archivo header.php de los temas Twenty Twelve copiado a un tema hijo.

<?php if ( is_page('projects') ) : ?>
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu' => 'conditional-menu-name', 'menu_class' => 'nav-menu' ) ); ?>
<?php else : ?>
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu' => 'Primary', 'menu_class' => 'nav-menu' ) ); ?>
<?php endif; ?>

Crea un nuevo menú con los elementos que quieras mostrar y reemplaza conditional-menu-name en el código anterior con el nombre de tu menú.

Los nombres de menu_class pueden necesitar cambios para temas distintos a Twenty Twelve.

Fuente

5 nov 2014 23:48:02
2

Creo que usar un plugin para esto es mejor, así podrás mantener la funcionalidad incluso si cambias de tema en el futuro. Echa un vistazo a este plugin. Hace lo que necesitas, aunque de una forma ligeramente diferente a como lo habías planteado.

https://wordpress.org/plugins/page-specific-menu-items/

Si esto te ayuda, por favor vota positivo o acepta como respuesta. ¡Gracias!

14 jul 2014 21:42:54
Comentarios

He probado este plugin. Con este plugin solo puedes seleccionar un menú para un tipo de publicación específico. Quiero seleccionar el menú para cada página.

User User
15 jul 2014 09:33:46

Si solo tienes un menú en todo el sitio y solo quieres ocultar ciertos enlaces de ese menú cuando un usuario está en una página determinada, este plugin hace eso. Después de seleccionar el tipo de publicación en el que deseas el menú (página es lo que quieres, o más) luego ve a editar una página y puedes marcar los enlaces que deseas ocultar. Este otro lo hace de manera opuesta. Seleccionas un menú desde un metabox en la pantalla de edición de página, por lo que necesitas múltiples menús para elegir: http://wordpress.org/plugins/ce-wp-menu-per-page/

Mark.C Mark.C
15 jul 2014 22:46:43
0

Sé que este hilo es antiguo, pero por si alguien necesita buscar una respuesta para esto, me gustaría sugerir los menús condicionales de Themify https://themify.me/conditional-menus. Puedes elegir qué menú usar por página, categoría, meta, todo. Y es gratuito :) Espero que esto ayude

14 nov 2015 19:44:41
1

Si estás buscando reactivar tus widgets y quieres una solución sencilla, puedes usar un plugin llamado Display Widgets. Yo lo he utilizado y aprovecho la sección de texto donde puedes agregar enlaces hacia donde quieras ir. Funciona tanto si los enlaces son de tu propio sitio como si son a otro sitio. Tiene un espacio debajo del texto donde puedes elegir en qué páginas mostrarlo u ocultarlo. Aún puedes eliminar los widgets que no uses.

Jugué bastante con los menús durante un tiempo antes de buscar y encontrar este plugin. Funciona muy bien.

Puedes encontrarlo en la sección de Plugins de WordPress.org.

20 jun 2014 16:56:27
Comentarios

¡Muchas gracias! Pero no estoy buscando un plugin adicional. Y no uso widgets ya que estas partes flotantes del sitio web son demasiado difíciles de entender para algunos de mis clientes.

User User
20 jun 2014 17:19:34
1

Una opción sería crear plantillas personalizadas para cada menú que tengas. (Esto se refiere a la casilla de verificación de ubicaciones del tema) Luego, en cada página, eliges la plantilla que deseas que use y también utilizará el menú asociado a esa plantilla.

https://codex.wordpress.org/Page_Templates

Obtienes el mismo resultado que creo que estás buscando, pero en lugar de indicarle a cada menú en qué página aparece, estarás indicando a cada página qué menú mostrará en ella. Un beneficio adicional de hacerlo de esta manera es que no hay posibilidad de que accidentalmente asignes dos menús al mismo lugar al mismo tiempo.

23 jul 2014 18:28:56
Comentarios

Sí, he visto esto. Pero el desarrollador nunca sabe cuántos menús necesitará el usuario. Así que tengo que crear muchas plantillas para cubrirlos todos. template_a.php, template_b.php, template_c.php, etc.

User User
24 jul 2014 09:45:40
0
-1

Puedes usar el plugin Menu Swapper para hacer lo mismo desde el panel de administración. Aquí está la Demo de este plugin.

17 abr 2016 22:32:23