Answers:
使用has_nav_menu()
和测试theme_location
,而不是menu_id
:
<?php
if ( has_nav_menu( $theme_location ) ) {
// User has assigned menu to this location;
// output it
wp_nav_menu( array(
'theme_location' => $theme_location,
'menu_class' => 'nav',
'container' => ''
) );
}
?>
您可以通过添加else
子句来输出替代内容。
编辑
您需要$theme_location
用实际 替换theme_location
:
<?php
if ( has_nav_menu( 'main_nav' ) ) {
// User has assigned menu to this location;
// output it
wp_nav_menu( array(
'theme_location' => 'main_nav',
'menu_class' => 'nav',
'container' => ''
) );
}
?>
Dashboard -> Appearance -> Menus
。创建并保存一个自定义菜单,然后使用下拉菜单将其应用到指定的主题位置。
您可以仅将false指定为的fallback_cb
参数wp_nav_menu
。什么都不会显示-而是wp_nav_menu将返回false(不显示任何内容)。
<?php
wp_nav_menu(array(
'theme_location' => $main_nav,
'menu_class' => 'nav',
'container' => '',
'fallback_cb' => false
));
您可以先注册菜单,而无需指定位置。
在functions.php
:
add_action( 'init', 'register_my_menus' );
function register_my_menus() {
register_nav_menus(
array(
'header' => __( 'Header Menu' )
)
);
}
当您在中调用菜单时header.php
,请使用has_nav_menu()
以下命令进行检查:
if ( has_nav_menu( 'header' ) ) {
wp_nav_menu( array( 'theme_location' => 'header' ) );
}
读这个:
http://codex.wordpress.org/Function_Reference/wp_nav_menu
设置'fallback_cb'=> false并且不会显示任何内容,这是wp伙计们建议的标准方法。