¿Cómo puedo mostrar diferentes menús para diferentes páginas?

9 nov 2011, 10:27:01
Vistas: 25.7K
Votos: 3

Tengo un sitio web que tiene un menú principal (horizontal superior) como este:

Menú principal
 - Inicio
 - Sobre Nosotros
 - Contáctenos

En la página de Inicio tengo un enlace a la página "Empresa" como este www.xyz.com/company.

Cuando estoy en esta página de empresa quiero que mi sitio web cambie los elementos del menú y use este:

Menú diferente
 - Inicio (mismo enlace a la página de Inicio que llevará al usuario a www.xyz.com)
 - Promotores
 - Galería
 - Mapas

Creo que puedo hacer esto usando los Conditional_Tags de WordPress, pero realmente no sé cómo debería empezar.

1
Comentarios

Hay un plugin que hace exactamente lo que necesitas. Prueba este: http://wordpress.org/extend/plugins/widget-logic/

User User
31 ene 2013 20:14:41
Todas las respuestas a la pregunta 5
0

Puedes intentarlo de esta manera. Ahora que estamos hablando de páginas, puedes configurar una plantilla separada para la página que necesita un menú diferente. Aquí es donde la nueva función de menús de WordPress resulta muy útil.

Primero, si estás usando la nueva función de menús de WordPress, coloca esto en lugar de tu menú actual:

<?php wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) ); ?>

Luego coloca esto al principio del archivo de plantilla que vas a usar para la página. Esto le indica a WordPress que es una plantilla de página.

<?php
/*
 Template Name: Ponle nombre a tu plantilla aquí
*/
?>

Después coloca esto en tu plantilla donde debería ir el menú para esta plantilla:

<?php wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'template_menu' ) ); ?>

Ahora tenemos que asegurarnos de que estarán activados. En el archivo functions.php de tu tema necesitarás colocar esto:

// Este tema usa wp_nav_menu() en dos ubicaciones.  
register_nav_menus( array(  
  'primary' => __( 'Navegación Principal', 'nombre_de_tu_tema' ),  
  'template_menu' => __('Navegación de Plantilla', 'nombre_de_tu_tema')  
) );

Una vez hecho todo esto, solo necesitas ir a tu panel de control > Apariencia > Menús y crear tus menús allí. Una vez creados, guárdalos y a la izquierda te dará la opción de dónde colocar cada menú mediante los menús desplegables.

Después de configurar todo esto, cuando crees una nueva página solo tendrás que seleccionar la plantilla que quieras usar.

Espero que esto ayude. Si tienes preguntas, solo pregunta.

9 nov 2011 23:22:57
0

Menú diferente en páginas distintas usando campos personalizados en la página --> functions.php

function shortcode_nav_menu_args( $args = '' ) {
    //si existe el campo personalizado cp_menu en la página obtiene el id del menú (número)
    //de lo contrario obtiene el menú por defecto
    $menu = get_post_meta(get_the_ID(), 'cp_menu', true);
    if(isset($menu)) { 
        $args['menu'] = $menu; 
    }
    return $args;
}
add_filter( 'wp_nav_menu_args', 'shortcode_nav_menu_args' );
17 mar 2017 13:55:26
0

Puedes usar el plugin gratuito Conditional Menus. Lo uso en mis proyectos y siempre funciona perfectamente.

11 feb 2020 15:28:59
1

Las etiquetas condicionales probablemente sean el camino a seguir. ¿Cómo estás llamando a tu menú? Asumo que es wp_list_pages().

Si es así, puedes hacer uso del argumento exclude, utilizando algo como lo siguiente (obviamente ajusta los números de página y las etiquetas condicionales según tus necesidades):

<?php
if(is_front_page()) :
    $exclude = '10,11,12';
elseif(is_page(15)) :
    $exclude = '1,2,3';
endif;
wp_list_pages('title_li=&depth=1&exclude=' . $exclude);
?>
9 nov 2011 12:50:19
Comentarios

Pero mi archivo tiene este código wp_list_pages('title_li=&depth=0&exclude=' . get_inc_pages("pag_exclude_") .'&sort_column=menu_order'); ?>

Anshul Anshul
10 nov 2011 08:56:59
0

Existe un plugin para esto que parece prometedor.

24 oct 2014 00:00:16