如何返回带有菜单名称的菜单?

时间:2013-05-19 作者:MyStream

在函数中。php,我定义了以下内容:

register_nav_menu( \'home_blocks\', __( \'Home Page Posts\', \'my_Theme\' ) );
在中/wp-admin/nav-menus.php, 我添加了一个名为主页帖子的菜单,并为其分配了3篇帖子,并将其设置为与主页帖子关联的项目作为菜单位置。

在里面index.php, 我添加了以下内容:

if ( has_nav_menu( \'primary\' ) ) {
    echo \'has primary<br />\';
} else {
    echo \'no primary<br />\';
}
if ( has_nav_menu( \'home_blocks\' ) ) {
    echo \'has home blocks<br />\';
} else {
    echo \'no home_blocks<br />\';
}
这两个成功的条件都得到了回应。

当我尝试返回菜单内容以便基于post\\u id运行一些内联自定义输出时,我尝试了以下代码,得到了NULL或string(0)”,这取决于我为位置和菜单名称输入的值。这些值是以什么方式关联的,我如何才能取回菜单?

$defaults = array(
    \'theme_location\'  => \'home_blocks\',
    \'menu\'            => \'\',
    \'container\'       => \'\',
    \'container_class\' => \'\',
    \'container_id\'    => \'\',
    \'menu_class\'      => \'\',
    \'menu_id\'         => \'\',
    \'echo\'            => 1,
    \'fallback_cb\'     => \'\',
    \'before\'          => \'\',
    \'after\'           => \'\',
    \'link_before\'     => \'\',
    \'link_after\'      => \'\',
    \'items_wrap\'      => \'\',
    \'depth\'           => 0,
    \'walker\'          => \'\'
);

$menu = wp_nav_menu( $defaults );

var_dump( $menu );

2 个回复
最合适的回答,由SO网友:birgire 整理而成

如果要返回wp_nav_menu(), 您应该替换

\'echo\'            => 1,
使用

\'echo\'            => 0,
那你应该从var_dump( $menu );.

您可以在Codex.

Update:

您应该删除此行:

\'items_wrap\'      => \'\',
要使用默认值,请执行以下操作:

\'items_wrap\'      => \'<ul id="%1$s" class="%2$s">%3$s</ul>\',
您还可以使用\'menu\' 参数,如果尚未为其选择位置,请在“菜单设置”页面中。当前已将其设置为\'\';

SO网友:meekbot

$menu = wp_nav_menu( array(\'theme_location\' => \'home_blocks\', \'echo\' => 0) );
var_dump($menu); //works just fine
在创建数组并将其值赋给空字符串时,实际上是覆盖了wp\\u nav\\u菜单的所有默认值。

删除该默认数组,只设置您需要的项,就像上面数组中的示例一样。

结束

相关推荐

Custom menus not showing

作为我上一次关于菜单的未解决查询的后续,这个问题已经进一步扩展。我的菜单没有打印代码中的任何地方。我正在注册菜单功能。php:add_action( \'after_setup_theme\', \'your_newtheme_setup\' ); if ( ! function_exists( \'your_newtheme_setup\' ) ) : function your_newtheme_setup() { if (