Автор: Санёк
октября 9, 2023
8 комментариев
Добавляем кастомное меню WordPress 3.0
Как я и обещал недавно пишу пост про добавление нового меню в старые шаблоны 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' => '' |
Текст перед и после текста ссылки соответственно. По умолчанию пусто.
1 | 'depth' => '0' |
Количество уровней иерархии или проще говоря подменю.
1 | 'theme_location' =>'' |
Место в теме, где будет выводится меню. Пригодится если вы хотите использовать несколько кастомных менюшек в разных местах шаблона. Не забудьте дополнительные меню указать в function.php
Пишите в каментах интересные для вас темы - напишу) И еще - подскажите плиз плагины для вставки кода в текст статьи, чтобы была интеграция в визуальный редактор и для установки плагина не требовалось лишних телодвижений)) А то я запарился везде теги вставлять.

что еще за кастомное меню? скрин бы хоть выложили
Да, я тоже не понял про “кастомное меню”, это как вообще?
Напиши еще про фишки wp3, какие знаешь.
Добавил видео
Я тоже добавил видео!
Вещь вообщем-то полезная. Тоже хочу ее на свой блог прикрутить!
Да, я тоже, но пока что жду обновления от Лекактуса
Спасибо! Никак не могу заставить себя перейти на 3.0 на всех проектах
Кстати в 3.0 еще можно создавать отдельные подблоги для пользователей сайта, об этом интересно было бы послушать, а то я не вникал.