导航菜单:主题位置不起作用

时间:2020-11-24 作者:Valeron

为什么WordPress管理仪表板上的我创建的菜单出现在customtemplate.php 尽管没有定义正确的\'theme_location\'?

即使WordPress管理仪表板中创建的菜单未设置为在任何位置显示,它也会显示在该位置。

仅当测试了以下if检查时,它才会隐藏。为什么?

if(has_nav_menu(\'menu-ID1\'))

Functions.php

register_nav_menus(
            array(
                \'menu-ID1\' => __( \'MenuName\', \'blabla\' ),
            )
        );

customtemplate.php

//Still displays even though the registered menu-ID1 is not used    
wp_nav_menu([\'theme_location\' => \'randomname\']);

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

我猜你的菜单只包含几页page 类型)在您的网站上?

但尽管如此wp_nav_menu(), 如果指定theme_location 不存在或不包含菜单(即,没有分配给该位置的菜单),则fallback_cb arg(默认为wp_page_menu()) 将确定显示的内容。

因此,如果希望函数仅在指定的主题位置显示菜单,可以执行以下操作has_nav_menu() 检查:

if ( has_nav_menu( \'menu-ID1\' ) ) {
    wp_nav_menu( \'theme_location=menu-ID1\' );
}
或设置fallback_cb 到空字符串:

wp_nav_menu( array(
    \'theme_location\' => \'menu-ID1\',
    \'fallback_cb\'    => \'\',
) );

// or you may pass the function args as a query string:
wp_nav_menu( \'theme_location=menu-ID1&fallback_cb=\' );