Як я можу відображати меню лише на певних сторінках?


10

Замість того, щоб використовувати віджети бічної панелі, щоб повідомити, на якій сторінці вони повинні бути видимими, я люблю вибирати в налаштуваннях меню, щоб вони відображалися на певних сторінках.

Спосіб Wordpress за замовчуванням:

Як це виглядає за замовчуванням

Отже, проекти - це сторінка, яка має деякі підсторінки. Але що робити, якщо мені подобається ще 10 цих сторінок і підсторінок з тією ж ситуацією.

Я хотів би додати додатковий параметр (список сторінок верхнього рівня):

Де я хочу налаштування

Але я не можу знайти документацію, дії, фільтри тощо, коли ці налаштування завантажуються.


Я думаю, це залежить від вашої теми. Але як відправна точка codex.wordpress.org/Navigation_Menus має допомогти !!
Шрі

1
Я бачив це посилання багато разів, немає інформації про додавання налаштувань до меню. Створюйте та відображайте лише користувацьке меню ...

Ой. Я думаю, що це рідний варіант Joomla, очевидно, не в WordPress. Для вашого сайту ви можете створити спеціальні файли категорії / 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'))

Я не знаю кращого рішення, але це дійсно погана практика у світі кодування. Я думаю, що принаймні, можливо, прокручуємо масив або щось тоді виконуємо своп меню. Безумовно, ціную відповідь, хоча. Зітхання
BRogers

1

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

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

Якщо це допоможе, будь ласка, голосуйте або прийміть як відповідь. Дякую!


Я спробував цей плагін. За допомогою цього плагіна ви можете вибрати лише меню для певного типу публікації. Я хочу вибрати меню для кожної сторінки.

Якщо у вас є лише одне меню на сайті, і ви просто хочете приховати певні посилання в цьому меню, коли користувач перебуває на певній сторінці, цей плагін робить це. Після вибору типу публікації, на якому ви хочете меню (сторінка - це те, що ви хочете, або більше), перейдіть до редагування сторінки, і ви можете перевірити посилання, які ви хочете приховати. Цей інший робить це навпаки. Ви вибираєте меню з метабокса на екрані редагування сторінки, тому вам потрібно вибрати кілька меню з: wordpress.org/plugins/ce-wp-menu-per-page
Марк.C

1

Ось як це можна зробити в «Двадцяти дванадцяти тем» 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 можуть знадобитися зміни для інших тем, ніж двадцять дванадцять.

Джерело


1

Я знаю, що ця тема є давньою, але у випадку, якщо комусь знадобиться знайти відповідь на це, я б запропонував умовні меню з них тематизувати https://themify.me/conditional-menus . Ви вибираєте, яке меню використовувати для кожної сторінки, категорії, мета, всього. і це безкоштовно :) сподіваюся, що це допоможе


0

Якщо ви готові повторно задіяти свої віджети і хочете просте рішення, ви можете використовувати плагін під назвою "Віджети відображення". Я використав це і використовую текстову частину, де ви можете додати посилання на те, де ви хочете піти. Він працює, чи є посилання на ваш власний сайт або на інший сайт. Унизу тексту є пробіл, де ви можете вибрати, які сторінки відображати чи ховати. Ви можете видалити віджети, якими ви не користуєтесь.

Я досить довго грав із меню, перш ніж шукав і знайшов цей плагін. Це добре працює.

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


Дуже дякую! Але я не шукаю додаткового плагіна. І я не використовую віджети, оскільки ці плаваючі частини веб-сайту занадто важкі для розуміння для деяких моїх клієнтів.

0

Одним із варіантів було б зробити власні шаблони для кожного меню, яке у вас є. (Це стосується прапорець "Місце розташування тем". Потім на кожній сторінці ви вибираєте шаблон, який ви хочете використовувати, і він також буде використовувати меню, пов'язане з цим шаблоном.

https://codex.wordpress.org/Page_Templates

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


Так, я на це подивився. Але розробник ніколи не знає, скільки меню потрібно користувачеві. Тому мені доведеться створити багато шаблонів, щоб охопити їх усі. template_a.php, template_b.php, І template_c.phpт.д.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.