wp_nav_menu and its fallback

时间:2011-06-14 作者:JM at Work

当我使用

wp_nav_menu(array(
    \'theme_location\' => \'mainnav\',
    \'container\' => \'nav\',
    \'container_id\' => \'mainnav\',
    \'container_class\' => \'clearfix\',
    \'depth\' => 4
)); 
如果用户没有在外观菜单下设置导航菜单,我注意到有一个类似

<div class="menu"><ul><li class="page_item page-item-2"><a title="Sample Page" href="http://dev.klifmedia.net/ae/?page_id=2">Sample Page</a></li></ul></div>
如何让回退使用中指定的内容wp_nav_menu? 如何检查是否有要显示的菜单,然后再显示它,否则什么也不显示?

1 个回复
最合适的回答,由SO网友:Bainternet 整理而成

默认的回退菜单是使用wp_page_menu() 功能,如果要自定义,则需要创建自己的回退功能:

function my_fallback_menu(){
   $args =array(\'whatever\');
   wp_page_menu($args);
}
然后在wp\\U nav\\U菜单调用中调用该函数作为回退:

wp_nav_menu(array(
    \'theme_location\' => \'mainnav\',
    \'container\' => \'nav\',
    \'container_id\' => \'mainnav\',
    \'container_class\' => \'clearfix\',
    \'depth\' => 4,
    \'fallback_cb\' => \'my_fallback_menu\'
)); 
要检查菜单是否存在,可以使用has_nav_menu() 功能:

if (has_nav_menu( \'mainnav\' )){
    //display the menu
}else{
    //no menu yet do something else
}
为了进一步简化操作,您可以调用菜单并将回退设置为false:

wp_nav_menu(array(
    \'theme_location\' => \'mainnav\',
    \'container\' => \'nav\',
    \'container_id\' => \'mainnav\',
    \'container_class\' => \'clearfix\',
    \'depth\' => 4,
    \'fallback_cb\' => false
)); 

结束

相关推荐

Menu API not switching menus?

我正在使用菜单API,我想切换到其他菜单,但出于某种原因,它保留了第一个菜单这是我的密码在函数中。php add_action( \'init\', \'register_my_menus\',10 ); function register_my_menus() { register_nav_menu(\'main-navigation\', \'Main Navigation\'); } 下面是我的主题文件(header.ph