WordPress как на ладони
wordpress jino

register_nav_menus() WP 3.0

Регистрируется сразу несколько расположений меню, к которым затем прикрепляются меню.

Произвольные меню настраиваются в админ-панели и выводятся в шаблоне функцией wp_nav_menu().

При создании меню в него можно разные ссылки: на рубрики, метки, страницы, посты, внешние ссылки и т.д.

Регистрация произвольного меню для админки

Функция одновременно регистрирует поддержку навигационных меню темой.

Функцию принято вызывать во время события after_setup_theme.

Используется в: register_nav_menu().

Хуков нет.

Возвращает

Функция ничего не возвращает.

Использование

<?php register_nav_menus( $locations ); ?>
$locations(массив) (обязательный)
Массив с названиями (ключи массива) и описаниями (значения ключей) каждого создаваемого меню.
По умолчанию: нет

Примеры

#1. Пример, регистрации сразу двух меню.

Такая регистрация сразу включает поддержку навигационных меню у темы.

add_action('after_setup_theme', function(){
	register_nav_menus( array(
		'header_menu' => 'Меню в шапке',
		'footer_menu' => 'Меню в подвале'
	) );
});

Выводить меню в шаблоне будем функцией wp_nav_menu().

Заметки

Эта функция автоматически регистрирует поддержку навигационных меню для темы, т.е. используя эту функцию нет необходимости предварительно вызывать функцию: add_theme_support( 'menus' );

В админ-панели в настройках меню, можно включить "расширенные настройки", которые позволят указать различные атрибуты у HTML тегов ссылок в меню.

Код register nav menus: wp-includes/nav-menu.php WP 4.8.2

<?php
function register_nav_menus( $locations = array() ) {
	global $_wp_registered_nav_menus;

	add_theme_support( 'menus' );

	$_wp_registered_nav_menus = array_merge( (array) $_wp_registered_nav_menus, $locations );
}

Cвязанные функции

Из метки: nav_menu (меню навигации)

Еще из раздела: Другие функции темы

register_nav_menus 7 комментариев
  • jvj @

    Доброго времени суток. Регистрирую меню с помощью данной функции, локализуя их

    register_nav_menus( 
    		array(
    			'main_menu' => __( 'Primary menu', 'themeloc' ),
    			'foot_menu'  => __( 'Footer menu', 'themeloc' ),
    		)
    	 );

    В админке названия меню не локализуются, отображаются как 'Primary menu', 'Footer menu', хотя в файле локализации они естественно переведены. Локализация подключена, работает везде по сайту, всё переводится корректно, кроме этих названий меню sad Что странно, что в той же twentyfifteen таким же образом подключены меню и они отображаются на русском.
    Может сможете что-то подсказать, в чём причина?

    1
    Ответить2 года назад #
    • jvj @

      Разобрался, добавлю, может кто на такие же грабли наступит. Функция не была повешена на событие - в результате меню регистрировалось и работало, но не переводилось. Перенес вызов функции в событие 'after_setup_theme' - перевод заработал.

      1
      Ответить1.10 года назад #
      • Kama4489

        Спасибо за вопрос и ответ на него. Дополнил пример в описании. thank_you

        Ответить1.9 года назад #
  • x1313

    а можно сделать так, чтобы виждет Произвольное меню зарегистрировался как область? и что для этого надо сделать

  • Здравствуйте!
    Вопрос по строчке 'primary' => __( 'Primary Menu', 'twentysixteen' ),
    Здесь для описания области 'primary' используется какая-то функция, имя которой начинается с двойного подчёркивания, я правильно понимаю? Не могли бы Вы объяснить, что это за функция такая?

  • Привет) Сколько таких меню можно зарегистрировать?

    Ответить2 месяца назад #

Здравствуйте, !

Ваш комментарий