函数文档

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.

Return

int|WP_Error Menu ID on success, WP_Error object on failure.

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.

User Contributed Notes

  1. Skip to note 2 content

    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'
    	) );
    }