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

10

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

Forma predeterminada de Wordpress:

Cómo se ve por defecto

Entonces proyectos es una página y tiene algunas subpáginas. Pero, ¿qué pasa si tengo como 10 más de estas páginas 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):

Donde quiero el escenario

Pero no puedo encontrar ninguna documentación, acciones, filtros, etc. cuando se carga esta configuración.


fuente
Creo que depende de tu tema. ¡Pero como punto de partida codex.wordpress.org/Navigation_Menus debería ayudar!
sri
1
Vi ese enlace muchas veces, no hay información sobre cómo agregar configuraciones a un menú. Solo cree y muestre un menú personalizado ...
Ay. Creo que es una opción nativa de Joomla, aparentemente no en WordPress. Para su sitio, puede crear archivos de categoría / páginas.php de salida personalizados y luego agregar un menú personalizado único allí, pero eso es un dolor total en el cuello. Tendría cuatro páginas .php de salida y cuatro menús únicos, uno para cada selección anterior. Una manera fácil de implementar es usar widgets de barra lateral como su herramienta de navegación principal. La herramienta de widget de menú personalizado es bastante simple. Cree un menú para cada página, suponiendo que tenga plantillas únicas para cada una. Tenga en cuenta que la barra lateral no es la mejor palabra. Puedes poner un widget en cualquier lugar.
zipzit
Soy consciente de las barras laterales y los widgets. Estas pequeñas partes del sitio web que tampoco están conectadas a una página. No quiero usar barras laterales y 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ú.
¿Su pregunta es solo "¿Cómo agrego configuraciones de menú personalizadas?" o también es "¿Cómo uso la configuración de menú personalizada para mostrar un menú solo en ciertas páginas?"
engelen

Respuestas:

3

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

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

Si desea mostrar la barra lateral en otras páginas también, puede usar la lógica o de esta manera:

if (is_page('projects') || is_page('home') || is_page('post-page'))
Bernie
fuente
No conozco una solución mejor, pero esta es una práctica realmente mala en el mundo de la codificación. Estoy pensando que, al menos, tal vez recorrer una matriz o algo y luego realizar un intercambio de menú. Definitivamente aprecio la respuesta sin embargo. Suspiro
BRogers
1

Creo que usar un complemento para esto es mejor, por lo que puede mantener la funcionalidad incluso si cambia los temas en el futuro. Echa un vistazo a este complemento. Hace lo que quieres, pero de forma ligeramente diferente a como lo burlaste.

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

Si esto ayuda, por favor vote o acepte como respuesta. ¡Gracias!

Mark.C
fuente
He intentado este complemento. Con este complemento, solo puede seleccionar un menú para un tipo de publicación específico. Quiero seleccionar el menú para cada página.
Si solo tiene un menú en el sitio y solo desea ocultar ciertos enlaces en ese menú cuando un usuario se encuentra en una página determinada, este complemento lo hace. Después de seleccionar el tipo de publicación en la que desea que aparezca el menú (la página es lo que desea, o más), vaya a editar una página y podrá verificar los enlaces que desea ocultar. Este otro lo hace al revés. Selecciona un menú de un metabox en la pantalla de edición de página, por lo que necesita varios menús para elegir: wordpress.org/plugins/ce-wp-menu-per-page
Mark.C
1

Así es como puede hacerlo en Twenty Twelve themes header.php copiado a un tema secundario.

<?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; ?>

Cree un nuevo menú con los elementos que desea mostrar y cambie el nombre del menú condicional en el código anterior con el nombre de su menú.

Es posible que sea necesario cambiar los nombres de menu_class para otros temas que no sean Twenty Twelve.

Fuente

Brad Dalton
fuente
1

Sé que este hilo es antiguo, pero en caso de que alguien necesite buscar una respuesta para esto, me gustaría sugerir los menús condicionales de theify https://themify.me/conditional-menus . Usted elige qué menú usar, por página, categoría, meta, todo. y es gratis :) espero que esto ayude

rosane
fuente
0

Si está dispuesto a volver a activar sus widgets y desea una solución simple, puede usar un complemento llamado Display Widgets. He usado esto y uso la parte de texto donde puedes agregar enlaces a donde quieres ir. Funciona si los enlaces están en su propio sitio o en otro sitio. Tiene un espacio debajo del texto donde puede elegir qué páginas mostrar u ocultar. Todavía puede eliminar los widgets que no usa.

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

Puede encontrarlo en la sección Complementos de WordPress.org.

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

Una opción sería hacer plantillas personalizadas para cada menú que tenga. (Eso se refiere a la casilla de verificación de ubicaciones de temas) Luego, en cada página, elige la plantilla que deseas que use y también usará el menú asociado con esa plantilla.

https://codex.wordpress.org/Page_Templates

Te da el mismo resultado que creo que estás buscando, pero en lugar de decirle a cada menú en qué página se muestra, le dirás a cada página qué menú se mostrará en él. Un beneficio adicional de hacerlo de esta manera es que no hay forma de que accidentalmente le digas a dos menús que estén en el mismo lugar al mismo tiempo.

KnightHawk
fuente
Sí, he mirado esto. Pero el desarrollador nunca sabe cuántos menús necesita el usuario. Así que tengo que crear muchas plantillas para cubrirlas todas. template_a.php, template_b.php, template_c.phpEtc.
-1

Puede usar el complemento Menu Swapper para hacer lo mismo desde el panel de administración. Aquí está la demostración de este complemento.

hmjha
fuente