Краткое руководство в работе с произвольным меню WordPress
Начнет с начала и постепенно дойдем до результата.
Думаю все замечали, что в WordPress, при построении стандартной структуры на купленных или скачанных в интернете шаблонах, главное меню (верхнее) определено для страниц, а меню в сайдбаре для постов.
На одном из моих проектов мне понадобилось продублировать главное меню внизу страницы и пункты меню должны были быть разных типов. К примеру, страница «О фирме» была именно типа «Страница», а новости выводились в виде «Записей», то есть должны выводиться короткие релизы, которые будут вести на полную новость.
Начнем создавать свое меню из админ меню Appearance -> Menus. После входа, в верху вашей админки есть пункт Screen Options, изменяя настройки вы можете включить данные определенного типа или отключить их.
Думаю чтобы много не говорить о том, о чем уже говорили другие добавлю небольшое видео из YouTube
Вспомните на время то видео которое показано выше, там вопрос Theme Location в меню Appearance > Menu, просто не был затронут, но это один из важнейших и ключевых вопросов. Когда мне была нужна возможность выбора нужного меню из админки для временной его подмены, на русском языке статей я просто не нашел.
Первое о чем нужно вспомнить, это о API меню в WordPress. Почитать на официальном сайте можно в Кодексе.
Рассмотрим метод регистрации из моей практики:
1 2 3 4 5 6 7 |
<!--?php function my_theme_three_navs() { register_nav_menus(array( 'primary' => 'Primary Menu', 'top' => 'Top Nav Menu', 'bottom' => 'Footer Nav Menu', )); } add_action('init', 'my_theme_three_navs'); ?--> |
После добавления фрагмента кода в файл function.php в меню Appearance -> Menus -> Theme Location появится новый выпадающий список со списком созданных меню. Осталось только добавить метку в тему нашего сайта. О том, как это сделать подробно опять же можно почитать в Кодексе WordPress на английском.
Пример установки метки в шапке сайта, файл header.php
1 2 3 4 |
<? wp_nav_menu(array( 'theme_location' => 'top', 'container_class' => 'my-nav' )); ?> |

/*

- Базовый курс по веб-дизайну;
- Верстка сайтов;
- Общий курс по CMS WordPress и продолжение курса по разработке шаблонов;
- Разработка сайтов на PHP.