Автор: Санёк
октября 9, 2023 8 комментариев
Как я и обещал недавно пишу пост про добавление нового меню в старые шаблоны WordPress. Хотел написать еще в понедельник, но у меня потек аквариум, так что последние дни прошли в хлопотах.
Новое меню WordPress обладает без преувеличения уникальными возможностями. Вы можете не просто выводить категории или страницы или определенную категорию. Новая менюшка может состоять из чего угодно. Ссылки, категория, страницы - все это может содержаться в одном меню в нужном вам порядке.
Итак вы решили, что эта фича именно то, что для счастья нужно, но старый шаблон к этому не готов. Я буду показывать на конкретном примере. Для начала нам нужно прописать в function.php (если этого файла в папке с шаблоном нет - создайте его) следующий код:
1
| register_nav_menus(php array('primary'=>__('Меню'),)); //любое название меню |
Теперь ищем код, отвечающий за вывод меню в вашем шаблоне. Допустим вот такой:
1
2
3
| <ul>
< ?php wp_list_pages('title_li='); ?>
</ul> |
и заменяем его на вот такой:
1
| < ?php wp_nav_menu( array( 'theme_location' => 'primary','container' => '', 'fallback_cb' => '',) ); ?> |
Все! Немного расскажу о параметрах. Дефолтные настройки выглядят так:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| < ?php $defaults = array(
'menu' => ,
'container' => 'div',
'container_class' => ,
'container_id' => ,
'menu_class' => 'menu',
'menu_id' => ,
'echo' => true,
'fallback_cb' => 'wp_page_menu',
'before' => ,
'after' => ,
'link_before' => ,
'link_after' => ,
'depth' => 0,
'walker' => ,
'theme_location' => );
?> |
Большая часть понятна и так, поэтому остановлюсь только на некоторых. По умолчанию вся менюшка запихивается в отдельный DIV
1
2
| <div class="menu-top_menu-container">
</div> |
Если этого не учесть, то поползет верстка. Прописываем 'container' => '' и никаких дивов выводится не будет.
1
| 'fallback_cb' => 'wp_page_menu' |
Это имя функции, которая будет выводится если вы не создали кастомное меню. По умолчанию это список страниц.
1
2
| 'before' =>''
'after' => '' |
Текст перед и после тега соответственно. По умолчанию пусто.
1
2
| 'link_before' => ''
'link_after' => '' |
Текст перед и после текста ссылки соответственно. По умолчанию пусто.
Количество уровней иерархии или проще говоря подменю.
Место в теме, где будет выводится меню. Пригодится если вы хотите использовать несколько кастомных менюшек в разных местах шаблона. Не забудьте дополнительные меню указать в function.php
В общем ничего сложного нет. На бложек пока не ставил, так как жду перевод от Лекактуса и сижу на старой версии Пишите в каментах интересные для вас темы - напишу) И еще - подскажите плиз плагины для вставки кода в текст статьи, чтобы была интеграция в визуальный редактор и для установки плагина не требовалось лишних телодвижений)) А то я запарился везде теги вставлять.