问题描述
我正在尝试使用 wp_nav_menu 只显示菜单 (如果存在),否则不显示任何内容。
如果我删除菜单,它将输出页面列表。
我的 functions.php 文件包含:
if (function_exists('register_nav_menus')) {
register_nav_menus (
array('main_nav' => 'Main Navigation Menu'));}
如何使用 wp_nav_menu 才能显示菜单,否则不显示?
最佳解决方案
使用 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' => ''
) );
}
?>
次佳解决方案
您可以将 wp_nav_menu
的 fallback_cb
参数指定为 false 。没有什么会出现 – 而是 wp_nav_menu 将返回 false(没有回应) 。
<?php
wp_nav_menu(array(
'theme_location' => $main_nav,
'menu_class' => 'nav',
'container' => '',
'fallback_cb' => false
));
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。