wp_create_nav_menu()
云策文档标注
概述
wp_create_nav_menu() 函数用于在 WordPress 中创建一个新的导航菜单。它接受一个菜单名称参数,并返回菜单 ID 或 WP_Error 对象。
关键要点
- 参数 $menu_name 是必需的字符串,表示菜单名称,且需要预转义斜杠。
- 返回值:成功时返回菜单 ID(整数),失败时返回 WP_Error 对象。
- 内部实现基于 wp_update_nav_menu_object() 函数,通过传递数组参数来创建菜单。
- 函数自 WordPress 3.0.0 版本引入。
代码示例
// 检查菜单是否存在,不存在则创建并添加菜单项
$menu_name = 'My First Menu';
$menu_exists = wp_get_nav_menu_object( $menu_name );
if ( ! $menu_exists ) {
$menu_id = wp_create_nav_menu($menu_name);
wp_update_nav_menu_item( $menu_id, 0, array(
'menu-item-title' => __( 'Home', 'textdomain' ),
'menu-item-classes' => 'home',
'menu-item-url' => home_url( '/' ),
'menu-item-status' => 'publish'
) );
wp_update_nav_menu_item( $menu_id, 0, array(
'menu-item-title' => __( 'Custom Page', 'textdomain' ),
'menu-item-url' => home_url( '/custom/' ),
'menu-item-status' => 'publish'
) );
}
原文内容
Creates a navigation menu.
Description
Note that $menu_name is expected to be pre-slashed.
Parameters
$menu_namestringrequired-
Menu name.
Source
function wp_create_nav_menu( $menu_name ) {
// expected_slashed ($menu_name)
return wp_update_nav_menu_object( 0, array( 'menu-name' => $menu_name ) );
}
Changelog
| Version | Description |
|---|---|
| 3.0.0 | Introduced. |
Skip to note 2 content
Codex
Basic Example
To check if a menu exists first and then create it if it doesn’t exists, and finally add menu items to it, use:
// Check if the menu exists $menu_name = 'My First Menu'; $menu_exists = wp_get_nav_menu_object( $menu_name ); // If it doesn't exist, let's create it. if ( ! $menu_exists ) { $menu_id = wp_create_nav_menu($menu_name); // Set up default menu items wp_update_nav_menu_item( $menu_id, 0, array( 'menu-item-title' => __( 'Home', 'textdomain' ), 'menu-item-classes' => 'home', 'menu-item-url' => home_url( '/' ), 'menu-item-status' => 'publish' ) ); wp_update_nav_menu_item( $menu_id, 0, array( 'menu-item-title' => __( 'Custom Page', 'textdomain' ), 'menu-item-url' => home_url( '/custom/' ), 'menu-item-status' => 'publish' ) ); }