Как показать разные меню для разных страниц?
У меня есть сайт с главным меню (верхним горизонтальным) такого вида:
Главное меню
- Главная
- О нас
- Контакты
На главной странице у меня есть ссылка на страницу "Компания" вида www.xyz.com/company.
Когда я нахожусь на странице компании, я хочу, чтобы мой сайт изменил пункты меню на следующие:
Другое меню
- Главная (та же ссылка на главную страницу, которая ведет на www.xyz.com)
- Промоутеры
- Галерея
- Карты
Я думаю, что могу сделать это с помощью WordPress Conditional_Tags, но действительно не знаю, с чего начать.

Вы можете попробовать таким способом. Сейчас мы говорим о страницах, для которых можно настроить отдельный шаблон с другим меню. Здесь новая функция меню WordPress действительно удобна.
Во-первых, если вы используете новую функцию меню WordPress, поместите это вместо вашего текущего меню:
<?php wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) ); ?>
Затем добавьте это в начало шаблонного файла, который вы собираетесь использовать для страницы. Это сообщает WordPress, что это шаблон страницы.
<?php
/*
Template Name: Название вашего шаблона здесь
*/
?>
После этого поместите этот код в ваш шаблон там, где должно находиться меню для этого шаблона:
<?php wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'template_menu' ) ); ?>
Теперь нужно убедиться, что они будут активированы. В файле functions.php вашей темы вам нужно добавить следующее:
// Эта тема использует wp_nav_menu() в двух местах.
register_nav_menus( array(
'primary' => __( 'Основная навигация', 'your_theme_name' ),
'template_menu' => __('Навигация шаблона', 'your_theme_name')
) );
После выполнения всех этих действий вам останется только перейти в админку > Внешний вид > Меню и создать там свои меню. После создания сохраните их, и слева у вас будет возможность выбрать, где какое меню должно отображаться, через выпадающие списки.
После настройки всего этого, при создании новой страницы вам нужно будет только выбрать шаблон, который вы хотите использовать.
Надеюсь, это поможет. Если есть вопросы — спрашивайте.

Разные меню на разных страницах с использованием произвольных полей на странице --> functions.php
function shortcode_nav_menu_args( $args = '' ) {
// если существует произвольное поле cp_menu на странице, получаем ID меню (число)
// иначе получаем меню по умолчанию
$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' );

Вы можете использовать бесплатный плагин Conditional Menus. Я использую его в своих проектах, и он всегда работает просто отлично!

Условные теги, скорее всего, будут лучшим решением. Как вы вызываете ваше меню? Предполагаю, что wp_list_pages()
?
Если так, вы можете использовать аргумент exclude
, например, как показано ниже (очевидно, нужно подставить свои ID страниц и настроить условные теги под ваши нужды) —
<?php
if(is_front_page()) :
$exclude = '10,11,12'; // Исключаемые ID для главной страницы
elseif(is_page(15)) :
$exclude = '1,2,3'; // Исключаемые ID для страницы с ID 15
endif;
wp_list_pages('title_li=&depth=1&exclude=' . $exclude);
?>

Существует плагин для этого, который выглядит многообещающе.
