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

10

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

Путь Wordpress по умолчанию:

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

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

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

Где я хочу настройки

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


источник
Я думаю, это зависит от вашей темы. Но в качестве отправной точки должен помочь codex.wordpress.org/Navigation_Menus !
Шри
1
Я видел эту ссылку много раз, там нет информации о добавлении настроек в меню.
Уч. Я думаю, что это родной вариант Joomla, по-видимому, не в WordPress. Для вашего сайта вы можете создать пользовательские выходные файлы category / pages.php, а затем добавить туда уникальное пользовательское меню, но это очень неприятно. У вас будет четыре выходных .php-страницы и четыре уникальных меню, по одному для каждого выбора выше. Одним из простых способов реализации является использование виджетов боковой панели в качестве основного инструмента навигации. Пользовательский инструмент виджета меню довольно прост. Создайте меню для каждой страницы, если у вас есть уникальные шаблоны для каждой страницы. Обратите внимание, боковая панель не лучшее слово. Вы можете разместить виджет в любом месте.
zipzit
Я в курсе боковых панелей и виджетов. Эти небольшие части сайта, которые также не связаны со страницей. Я не хочу использовать боковые панели и виджеты и отключил их, потому что я не использую ни одного из них. В любом случае, я думаю, что расположение меню - это настройки меню, а не настройка виджета, который содержит меню.
Ваш вопрос просто "Как добавить пользовательские настройки меню?" или это также «Как использовать пользовательские настройки меню для отображения меню только на определенных страницах?»?
engelen

Ответы:

3

Это хороший вариант, но я согласен с Шри, сейчас это действительно зависит от вашей темы. Вы можете обойти это через 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'))
Bernie
источник
Я не знаю лучшего решения, но это действительно плохая практика в мире кодирования. Я думаю, что, по крайней мере, возможно, перебрать массив или что-то, а затем выполнить обмен меню. Определенно ценю ответ, хотя. Вздох
BRogers
1

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

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

Если это поможет, пожалуйста, проголосуйте или примите в качестве ответа. Спасибо!

Mark.C
источник
Я попробовал этот плагин. С помощью этого плагина вы можете выбрать меню только для определенного типа сообщений. Я хочу выбрать меню для каждой страницы.
Если у вас есть только одно меню на сайте, и вы просто хотите скрыть определенные ссылки в этом меню, когда пользователь находится на определенной странице, этот плагин делает это. После того, как вы выберете тип публикации, в которой вы хотите разместить меню (страница - это то, что вам нужно, или больше), перейдите к редактированию страницы и вы можете проверить ссылки, которые хотите скрыть. Этот другой делает это наоборот. Вы выбираете меню из метабокса на экране редактирования страницы, поэтому вам нужно выбрать несколько меню: wordpress.org/plugins/ce-wp-menu-per-page
Mark.C
1

Вот как вы можете сделать это в 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.

Источник

Брэд Далтон
источник
1

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

rosane
источник
0

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

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

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

Сьюзен
источник
Большое спасибо! Но я не ищу дополнительный плагин. И я не использую виджеты, так как эти плавающие части сайта слишком сложны для понимания некоторыми из моих клиентов.
0

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

https://codex.wordpress.org/Page_Templates

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

ястреб
источник
Да, я смотрел на это. Но разработчик никогда не знает, сколько меню нужно пользователю. Поэтому мне нужно создать множество шаблонов, чтобы охватить их все. template_a.php, template_b.php, И template_c.phpт.д.
-1

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

hmjha
источник