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

20 июн. 2014 г., 10:41:50
Просмотры: 70.5K
Голосов: 11

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

Стандартный способ WordPress:

Стандартный вид настроек меню

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

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

Желаемое расположение настройки

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

6
Комментарии

Думаю, это зависит от вашей темы. Но для начала http://codex.wordpress.org/Navigation_Menus должно помочь!!

sri sri
20 июн. 2014 г. 11:00:46

Я видел эту ссылку много раз, там нет информации о добавлении настроек в меню. Только создание и отображение пользовательского меню...

User User
20 июн. 2014 г. 11:01:56

Ой. Кажется, это нативная опция Joomla, в WordPress её нет. Для вашего сайта можно создать пользовательские файлы вывода category/pages.php и затем добавить туда уникальное пользовательское меню, но это очень утомительно. У вас будет четыре файла вывода .php и четыре уникальных меню, по одному для каждого выбора выше. Один простой способ реализации - использовать виджеты сайдбара в качестве основного инструмента навигации. Инструмент виджета пользовательского меню довольно прост. Создайте меню для каждой страницы, предполагая, что у вас есть уникальные шаблоны для каждой. Примечание: "сайдбар" не самое лучшее слово. Вы можете разместить виджет где угодно.

zipzit zipzit
20 июн. 2014 г. 11:10:32

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

User User
20 июн. 2014 г. 11:23:18

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

engelen engelen
20 июн. 2014 г. 15:47:02

Ну, я не знаю, как добавить настройку пользовательского меню, так почему же мой вопрос должен быть о том, как использовать эту настройку?

User User
20 июн. 2014 г. 15:55:24
Показать остальные 1 комментариев
Все ответы на вопрос 7
1

Это хороший вариант, но я согласен с sri, сейчас это действительно зависит от вашей темы. Вы можете обойти проблему с помощью 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'))
14 сент. 2014 г. 12:31:15
Комментарии

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

BRogers BRogers
4 февр. 2016 г. 08:55:23
0

Вот как это можно реализовать в теме Twenty Twelve, скопировав 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; ?>

Создайте новое меню с нужными пунктами и замените 'conditional-menu-name' в приведённом коде на название вашего меню.

Имена menu_class могут потребовать изменения для тем, отличных от Twenty Twelve.

Источник

5 нояб. 2014 г. 23:48:02
2

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

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

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

14 июл. 2014 г. 21:42:54
Комментарии

Я попробовал этот плагин. С его помощью можно выбрать меню только для определенного типа записи. Мне же нужно выбирать меню для каждой страницы отдельно.

User User
15 июл. 2014 г. 09:33:46

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

Mark.C Mark.C
15 июл. 2014 г. 22:46:43
0

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

14 нояб. 2015 г. 19:44:41
1

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

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

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

20 июн. 2014 г. 16:56:27
Комментарии

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

User User
20 июн. 2014 г. 17:19:34
1

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

https://codex.wordpress.org/Page_Templates

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

23 июл. 2014 г. 18:28:56
Комментарии

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

User User
24 июл. 2014 г. 09:45:40
0
-1

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

17 апр. 2016 г. 22:32:23