Как я могу отобразить меню только на определенных страницах?

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

По умолчанию WordPress:

Как он выглядит по умолчанию

Таким образом, проекты представляют собой страницу и содержат некоторые подстраницы. Но что, если у меня есть еще 10 таких страниц и подстраниц с той же ситуацией.

Я хотел бы добавить дополнительную настройку (список страниц верхнего уровня):

Где я хочу установить

Но при загрузке этих параметров я не могу найти документацию, действия, фильтры и т. Д.

Solutions Collecting From Web of "Как я могу отобразить меню только на определенных страницах?"

Это хороший вариант, но я согласен с шри, сейчас это действительно зависит от вашей темы. Вы можете выполнить обход через is_page () . Вам нужно написать что-то вроде этого в файле темы page.php :

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

Если вы хотите показать боковую панель на других страницах, вы можете использовать логику или вот так:

 if (is_page('projects') || is_page('home') || is_page('post-page')) 

Я думаю, что использовать плагин для этого лучше, поэтому вы можете сохранить функциональность, даже если вы измените темы в будущем. Проверьте этот плагин. Он делает то, что вы хотите, но немного по-другому, чем то, как вы его издеваетесь.

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

Если это поможет, пожалуйста, голосуйте или согласитесь в качестве ответа. Благодаря!

Так вы можете сделать это в Twenty Twelve themes header.php, скопированном в дочернюю тему.

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

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

Названия menu_class могут нуждаться в изменении для тем, отличных от Twenty Twelve.

Источник

Я знаю, что эта ветка устарела, но если кому-то понадобится найти ответ для этого, я хотел бы предложить условные меню из http://themify.me/conditional-menus. Вы выбираете, какое меню использовать, на страницу, категорию, мета, все. и это бесплатно 🙂 надеюсь, что это поможет

Если вы хотите повторно использовать свои виджеты и хотите получить простое решение, вы можете использовать плагин под названием Display Widgets. Я использовал это и использую текстовую часть, где вы можете добавлять ссылки туда, куда хотите идти. Он работает независимо от того, находятся ли ссылки на вашем собственном сайте или на другом сайте. В нем есть место ниже текста, где вы можете выбрать, какие страницы показывать или скрывать. Вы все равно можете удалить виджеты, которые вы не используете.

Я довольно долго играл с меню, прежде чем искал и нашел этот плагин. Это работает хорошо.

Вы можете найти его в разделе «Плагины» на WordPress.org.

Один из вариантов заключается в создании пользовательских шаблонов для каждого используемого вами меню. (Это относится к местам тематических мест) Затем на каждой странице вы выбираете шаблон, который хотите использовать, и он также будет использовать меню, связанное с этим шаблоном.

https://codex.wordpress.org/Page_Templates

Он дает вам тот же результат, который, как я думаю, вы ищете, а не рассказываете каждому меню, на какой странице он отображается, вы будете рассказывать каждой странице о том, какое меню будет отображаться на нем. Дополнительным преимуществом такого подхода является то, что вы не можете случайно указать двум меню одновременно в одном и том же месте.

Вы можете использовать плагин Menu Swapper для выполнения того же самого действия с панели администратора. Вот Демо этого плагина.