wp_create_nav_menu()WP 3.0.0

Создаёт новое навигационное меню в WordPress по указанному названию.

Функция создаёт только сам объект меню. Пункты меню нужно добавлять отдельно через wp_update_nav_menu_item(), а привязку к области темы делать отдельно через настройки темы или set_theme_mod().

Название меню ожидается уже подготовленным со слешами (pre-slashed). Если название приходит из пользовательского ввода, перед передачей в функцию обычно используют wp_slash().

Функция не проверяет, существует ли меню с таким названием. Если нужно не создавать дубликаты, сначала проверьте меню через wp_get_nav_menu_object().

Работает на основе: wp_update_nav_menu_object()

Хуков нет.

Возвращает

int|WP_Error.

  • int — ID созданного меню при успешном создании.
  • WP_Error — объект ошибки, если меню создать не удалось.

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

wp_create_nav_menu( $menu_name );
$menu_name(string) (обязательный)

Название создаваемого меню.

Ожидается, что значение уже подготовлено со слешами, если нет используйте wp_slash().

Примеры

0

#1 Создание нового меню

Создаём меню и проверяем, не вернулась ли ошибка.

$menu_id = wp_create_nav_menu( 'Главное меню' );
if ( is_wp_error( $menu_id ) ) {
	return;
}
0

#2 Создание меню, если его ещё нет

Перед созданием проверяем, существует ли меню с таким названием.

$menu_name = 'Главное меню';
$menu      = wp_get_nav_menu_object( $menu_name );

if ( ! $menu ) {
	$menu_id = wp_create_nav_menu( wp_slash( $menu_name ) );

	if ( is_wp_error( $menu_id ) ) {
		return;
	}
}
0

#3 Создание меню и добавление пункта

Создаём меню, а затем добавляем в него ссылку на главную страницу.

$menu_id = wp_create_nav_menu( wp_slash( 'Главное меню' ) );
if ( is_wp_error( $menu_id ) ) {
	return;
}

wp_update_nav_menu_item( $menu_id, 0, [
	'menu-item-title'  => __( 'Главная', 'textdomain' ),
	'menu-item-url'    => home_url( '/' ),
	'menu-item-status' => 'publish',
] );
0

#4 Создание меню и назначение его в область темы

Создаём меню и назначаем его в зарегистрированную область primary.

$menu_id = wp_create_nav_menu( wp_slash( 'Главное меню' ) );
if ( is_wp_error( $menu_id ) ) {
	return;
}

$locations = get_theme_mod( 'nav_menu_locations', [] );
$locations['primary'] = $menu_id;

set_theme_mod( 'nav_menu_locations', $locations );

Список изменений

С версии 3.0.0 Введена.

Код wp_create_nav_menu() WP 6.9.4

function wp_create_nav_menu( $menu_name ) {
	// expected_slashed ($menu_name)
	return wp_update_nav_menu_object( 0, array( 'menu-name' => $menu_name ) );
}