wordpress自定义菜单时常用到的函数

在WordPress中,"自定义菜单"相关的常用函数可分为注册、显示、获取、检测、Walker类五大类。下面按使用频率由高到低整理,并给出典型用法和一句话说明,方便速查。

注册菜单位置

register_nav_menus()

一次性注册多个菜单位置(供后台"外观→菜单"分配)。

复制代码
add_action( 'after_setup_theme', function () {
    register_nav_menus( [
        'primary'   => __( '顶部主导航', 'mytheme' ),
        'footer'    => __( '底部链接',  'mytheme' ),
        'handheld'  => __( '移动端抽屉菜单', 'mytheme' ),
    ] );
} );

在前端输出菜单

wp_nav_menu()

最常用,几乎所有主题都用它渲染菜单。

复制代码
wp_nav_menu( [
    'theme_location'  => 'primary', // 对应 register_nav_menus 的 key
    'container'       => 'nav',
    'container_class' => 'main-nav',
    'menu_class'      => 'nav-list',
    'fallback_cb'     => false,     // 没有菜单时不输出页面列表
    'depth'           => 2,         // 只支持两级
] );

获取菜单数据(不直接输出)

wp_get_nav_menu_object($menu)

通过菜单名/ID/Slug获取菜单对象。

复制代码
$menu_obj = wp_get_nav_menu_object( 'guest-menu' ); // 返回 WP_Term

返回菜单条目数组(WP_Post类型)。

复制代码
$items = wp_get_nav_menu_items( $menu_obj->term_id );

判断相关

has_nav_menu($location)

检测某菜单位置是否已分配菜单。

复制代码
if ( has_nav_menu( 'primary' ) ) {
    wp_nav_menu( [ 'theme_location' => 'primary' ] );
}

is_nav_menu($menu)

检测给定slug/id/name是否为有效菜单。

Walker类(自定义HTML结构)

Walker_Nav_Menu

继承它可彻底改写子菜单等输出,常见于Bootstrap/Tailwind导航。

复制代码
class BS5_Nav_Walker extends Walker_Nav_Menu {
    function start_lvl( &$output, $depth = 0, $args = null ) {
        $output .= '<ul class="dropdown-menu">';
    }
    function start_el( &$output, $item, $depth = 0, $args = null, $id = 0 ) {
        // 自定义 <li> 与 <a> 的 class、data-bs-toggle 等
    }
}

调用:

复制代码
wp_nav_menu( [
    'theme_location' => 'primary',
    'walker'         => new BS5_Nav_Walker(),
] );

其它辅助函数

wp_create_nav_menu($name)

以代码方式新建菜单(一次性脚本常用)。

wp_delete_nav_menu($menu)

wp_update_nav_menu_object(menu id,args)

速查表(一行记忆)

注册:register_nav_menus()

显示:wp_nav_menu()

拿对象:wp_get_nav_menu_object()

拿条目:wp_get_nav_menu_items()

判断:has_nav_menu()/is_nav_menu()

改结构:继承Walker_Nav_Menu

原文

http://www.dulizhan.fj.cn/wordpress/261.html

相关推荐
boke112百科1 年前
WordPress函数wptexturize的介绍及用法示例,字符串替换为HTML实体
wordpress·wordpress教程·wordpress函数