¿Cómo puedo mostrar diferentes menús para diferentes páginas?
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.

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.

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' );

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

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

Existe un plugin para esto que parece prometedor.
