如果你退房has_nav_menu()
, 您将看到,它首先检查该位置是否存在菜单(我们所期望的)。
However, 它也将返回true
如果位置只是注册的,那么即使没有菜单,您的条件仍然为真的原因是:
function has_nav_menu( $location ) {
$registered_nav_menus = get_registered_nav_menus();
if ( ! isset( $registered_nav_menus[ $location ] ) ) {
return false;
}
$locations = get_nav_menu_locations();
return ( ! empty( $locations[ $location ] ) );
}
相反,使用上面的代码片段检查是否注册了实际菜单:
$registered_nav_menus = get_registered_nav_menus();
if ( isset( $registered_nav_menus[ \'header-top\' ] ) ) {
// Your nav menu
} else {
// No menu
}
Update: 检查是否存在有效菜单(&P);有项目,使用
echo => false
并检查输出:
$menu = wp_nav_menu(
array(
\'theme_location\' => \'header-top\',
\'container\' => \'nav\',
\'menu_class\' => \'right no-bullets no-margin\',
\'fallback_cb\' => false,
\'echo\' => false,
)
);
if ( $menu ) {
echo $menu;
} else {
echo \'No menu!\';
}