问题描述

我正在尝试使用 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_menufallback_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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。