Меню WordPress

Оригинальное название: WordPress menu

Коротко

Набор навигационных ссылок, который собирают в админке из страниц, рубрик и произвольных адресов и выводят в отведённых темой местах — шапке, подвале, боковой колонке.

Что такое «Меню WordPress»

В классических темах меню собирают в разделе «Внешний вид → Меню» или в настройщике: добавляют страницы, рубрики, записи и ссылки, перетаскивают их и сдвигают вправо для вложенности. Одно меню можно назначить в одну или несколько областей, которые объявила тема.

Внутри всё устроено на стандартных механизмах. Само меню — термин служебной таксономии nav_menu, каждый пункт — запись типа nav_menu_item, а адрес, родитель и тип связанного объекта хранятся в её метаданных. Привязка меню к областям сохраняется в настройках конкретной темы, поэтому после смены темы меню остаются в базе, но их приходится заново назначать в области.

Пример: область в шапке

// functions.php
add_action( 'after_setup_theme', function () {
    register_nav_menus( [ 'header' => 'Меню в шапке' ] );
} );

// header.php
wp_nav_menu( [
    'theme_location' => 'header',
    'container'      => false,
    'depth'          => 2,
] );

Параметр depth ограничивает вложенность: даже если редактор добавит третий уровень, тема его не выведет и вёрстка не развалится. Активный пункт получает классы current-menu-item и current-menu-ancestor, на них строят подсветку текущего раздела.

В блочных темах

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

Почему пропадают пункты

Классическая проблема большого меню: после сохранения исчезает хвост списка. Каждый пункт передаёт на сервер около десятка полей формы, а PHP по умолчанию принимает не больше 1000 переменных за запрос — лимит max_input_vars. Меню на сотню пунктов в него уже не помещается. Помогает увеличение лимита в настройках PHP или разбиение одного огромного меню на несколько.

Обновлено:

Все термины раздела «WordPress»

Что будем искать? Например,Продвижение