wp_create_nav_menu()
Создаёт новое навигационное меню в WordPress по указанному названию.
Функция создаёт только сам объект меню. Пункты меню нужно добавлять отдельно через wp_update_nav_menu_item(), а привязку к области темы делать отдельно через настройки темы или set_theme_mod().
Название меню ожидается уже подготовленным со слешами (pre-slashed). Если название приходит из пользовательского ввода, перед передачей в функцию обычно используют wp_slash().
Функция не проверяет, существует ли меню с таким названием. Если нужно не создавать дубликаты, сначала проверьте меню через wp_get_nav_menu_object().
Хуков нет.
Возвращает
int|WP_Error.
int— ID созданного меню при успешном создании.- WP_Error — объект ошибки, если меню создать не удалось.
Использование
wp_create_nav_menu( $menu_name );
- $menu_name(string) (обязательный)
Название создаваемого меню.
Ожидается, что значение уже подготовлено со слешами, если нет используйте wp_slash().
Примеры
#1 Создание нового меню
Создаём меню и проверяем, не вернулась ли ошибка.
$menu_id = wp_create_nav_menu( 'Главное меню' );
if ( is_wp_error( $menu_id ) ) {
return;
} #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;
}
} #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',
] ); #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 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 ) );
}