WP_NAV_MENU始终回退到菜单

时间:2011-03-30 作者:dama_do_bling

嘿,大家好,
我正在编写一个自动函数,从函数中生成菜单。它对数组中的每个项目调用wp\\u nav\\u菜单,因为我希望它是动态的。问题是,无论我如何设置,如果菜单不存在,wp\\u nav\\u menu会生成一个菜单,例如“默认”。这是我的代码(项只是一组字符串):

for($i=0;$i<count($items);$i++) {

    $themenu=$items[$i];

    $mymenu = wp_nav_menu(array(
            \'menu\' => $themenu,
            \'menu_class\' => \'mymenu\',
            \'container\' => \'false\',
            \'fallback_cb\' => \'false\',
            \'echo\' => false
            )
        );  

    echo $themenu;

    }
我知道它部分工作,因为如果$themenu存在,它会显示正确的一个。但如果没有,它只会显示任何菜单!不仅令人讨厌,而且还积极破坏用户体验。

3 个回复
SO网友:Jan Fabry

wp_nav_menu() 事实上,我们努力为您提供菜单fallback_cb 只有在其他方法无效时才执行。From the code:

如果menu 提供并引用现有菜单(通过wp_get_nav_menu_object(), ,否则,如果theme_location 设置为注册的菜单位置,将传递给wp_get_nav_menu_object()fallback_cb 调用,默认情况下wp_page_menu, 这是所有页面的菜单,因此如果您只想使用menu 参数,您应该通过调用wp_get_nav_menu_object(). 只有当这返回你应该调用的内容时wp_nav_menu().

SO网友:Chip Bennett

尝试将您的回声包裹在has_nav_menu() 有条件的:

for($i=0;$i<size($items);$i++) {

    $themenu=$items[$i];

    $mymenu = wp_nav_menu(array(
            \'menu\' => $themenu,
            \'menu_class\' => \'mymenu\',
            \'container\' => \'false\',
            \'fallback_cb\' => \'false\',
            \'echo\' => false
            )
        );  

    if ( has_nav_menu( $themenu ) ) echo $themenu;

    }
(如果我正确地遵循了您的代码…)

SO网友:Chip Bennett

来自Codex条目wp_nav_menu():

$fallback\\u cb(string)(可选)如果菜单不存在,请使用fallback函数。Set to false for no fallback. 默认:wp\\u page\\u菜单

你试过传球吗\'fallback_cb\' => false?

编辑:

根据以下评论,\'fallback_cb\' => \'false\' 正在说明wp_nav_menu() 回退到调用的函数false(), 由于这个函数不存在,它会返回到正常的回退状态,wp_page_menu(). 因此,使用\'fallback_cb\' => false (即布尔值,而不是字符串值)。

结束

相关推荐

Thesis -style Navigation

我正在研究一个主题,我希望用户能够像论文一样选择要在主题选项页面中显示的页面。我已经在谷歌上搜索了几个小时的逆向工程论文,但还没有找到一个很好的解决方案。我想知道是否有人做过这件事或看过教程。