register_nav_menus() WP 3.0
Регистрируется сразу несколько расположений меню, к которым затем прикрепляются меню.
Произвольные меню настраиваются в админ-панели и выводятся в шаблоне функцией wp_nav_menu().
При создании меню в него можно добавить разные ссылки: на рубрики, метки, страницы, посты, внешние ссылки и т.д.
Функцию принято вызывать во время события after_setup_theme.
Эта функция автоматически регистрирует поддержку навигационных меню для темы, т.е. используя эту функцию нет необходимости предварительно вызывать функцию: add_theme_support( 'menus' );
В админ-панели в настройках меню, можно включить "расширенные настройки", которые позволят указать различные атрибуты у HTML тегов ссылок в меню.
Хуков нет.
Возвращает
Функция ничего не возвращает.
Использование
register_nav_menus( $locations );
- $locations(массив) (обязательный)
- Массив с названиями (ключи массива) и описаниями (значения ключей) каждого создаваемого меню.
Примеры
#1. Пример, регистрации сразу двух меню.
Такая регистрация сразу включает поддержку навигационных меню у темы.
add_action( 'after_setup_theme', function(){ register_nav_menus( [ 'header_menu' => 'Меню в шапке', 'footer_menu' => 'Меню в подвале' ] ); } );
Выводить меню в шаблоне будем функцией wp_nav_menu().
Заметки
- Global. Массив. $_wp_registered_nav_menus
Список изменений
С версии 3.0.0 | Введена. |
Код register_nav_menus() register nav menus WP 5.6.2
function register_nav_menus( $locations = array() ) {
global $_wp_registered_nav_menus;
add_theme_support( 'menus' );
foreach ( $locations as $key => $value ) {
if ( is_int( $key ) ) {
_doing_it_wrong( __FUNCTION__, __( 'Nav menu locations must be strings.' ), '5.3.0' );
break;
}
}
$_wp_registered_nav_menus = array_merge( (array) $_wp_registered_nav_menus, $locations );
}