wp_nav_menu() 函数是WordPress 3.0 以后添加的一个自定义导航菜单调用函数,可用来调用 register_nav_menus() 函数 注册的菜单。

语法结构

<php wp_nav_menu(array $args = array()) ?> //实现前端调用WordPress后台添加的菜单

参数

$args所调用菜单名称及HTML结构等

<?php has_nav_menu('$location') ?> 
//判断是否有此菜单,其主要用途是通过该方法,实现后台的生成菜单调用。

默认版

<?php wp_nav_menu(); ?>

通过默认版设置导航菜单,则后台添加的菜单会自动生成顶部菜单,通过此方法生成的菜单的结构如下:

<div class="menu-menu-container">
    <ul id="menu-menu" class="menu">
        <li id="menu-item-49" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-49">
            <a href="link">菜单名称</a>
        </li>
        <li id="menu-item-50" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-49">
            <a href="link">菜单名称</a>
        </li>
    </ul>
</div>

简单版

获取的菜单名称为nav,只列出一级菜单,样式名为navcontainer

<?php wp_nav_menu(array( 
    'menu' => 'header_menu',
    'depth' => 1,
    'menu_class'=>'navcontainer'
    )
); ?>

完整版参数

<?php wp_nav_menu( array(
    'theme_location'  => '',
    'menu'            => '',
    'container'       => 'div',
    'container_class' => '',
    'container_id'    => '',
    'menu_class'      => 'menu',
    'menu_id'         => '',
    'echo'            => true,
    'fallback_cb'     => 'wp_page_menu',
    'before'          => '',
    'after'           => '',
    'link_before'     => '',
    'link_after'      => '',
    'items_wrap'      => '<ul id="%1$s" class="%2$s">%3$s</ul>',
    'depth'           => 0,
    'walker'          => ''
    ) 
);?>
theme_location 导航别名,register_nav_menu( ‘header-menu’, ‘顶部导航’ ); header-menu即为导航别名
menu 后台设置的菜单的名称
container 最外层容器标签名字如div标签 nav标签,如果为 false 时去除div标签
container_id 最外层容器id名
container_class 最外层容器class名
menu_class ul标签class值
menu_id ul标签id值
before 显示在导航a标签之前(测试无效果)
after 显示在导航a标签之后(测试无效果)
link_before 每个菜单链接文本前的文本如<a>(link_before对应的字段)网站首页</a>
link_after 每个菜单链接文本后的文本如<a>网站首页(link_before对应的字段)</a>
depth 菜单深度 0代表多级菜单,1代表一级菜单
walker 调用一个对象定义显示导航菜单
items_wrap 使用字符串替换修改ul的class(测试无效果)

根据是否登录生成不同该菜单栏

<?php
if (is_user_logged_in()) {
    wp_nav_menu(array( 'theme_location' => 'logged-in-menu'));
} else {
    wp_nav_menu(array('theme_location' => 'logged-out-menu'));
} ?>