在循环之外,我如何回显当前页面的菜单标题?

时间:2015-07-22 作者:oliverh72

我不知道为什么我觉得这么难。我在这里也写过很多类似的帖子,但都没有成功。

我正在索引页面上的循环外构建一个菜单-它是一个标准的posts页面,而不是设置为主页的静态页面。基本上,我希望当前页面的菜单标题(即:主页)能在页面上得到回应。我会将相同的代码放在单页/页面/归档文件等上。然后我使用wp\\u nav\\u menu来回显它下面的菜单,如下所示:

<?php wp_nav_menu( array( \'theme_location\' => \'secondary\', \'container\' => \'div\', \'container_class\' => \'submenu-container sub-menu clearfix\', \'menu_class\' => \'ipf-sectionmenu\' ) ); ?>  
非常简单。。。。除了重复菜单标题。暂时,我只是重复菜单中的第一个项目,它几乎总是在家,所以这是可行的。像这样:

<?php
    $top = wp_get_nav_menu_items(\'Main\');
    $name = $top[0]->post_title;
?>
<h3 id="left-subheader-mobile" class="purple-header"><?php echo $name; ?></h3>
我错过了什么?

1 个回复
SO网友:fuxia

过滤时wp_nav_menu, 您可以将nav菜单参数作为第二个参数$args. 这是一个对象(astdClass), 由WordPress设置,同时确定要使用哪个菜单,条目名为menu. 这是整个导航菜单对象。其标题在条目中name.

这里有一个技巧:您可以将自定义参数传递给wp_nav_menu().

假设你在打电话wp_nav_menu() 像这样:

wp_nav_menu(
    [
        \'theme_location\'  => \'secondary\',
        \'container\'       => \'div\',
        \'container_class\' => \'submenu-container sub-menu clearfix\',
        \'menu_class\'      => \'ipf-sectionmenu\',
        \'heading\'         => \'<h3 id="left-subheader-mobile" class="purple-header">%s</h3>\',
    ]
);
现在,在参数中有了标题的HTML,它与挂钩上的实际菜单标题一起可用wp_nav_menu. 你所要做的就是把它结合起来。

非常简单,只需将此添加到functions.php:

add_filter( \'wp_nav_menu\', function( $nav_menu, $args ) {

    if ( empty ( $args->heading ) )
        return $nav_menu;

    $title   = esc_html( $args->menu->name );
    $heading = sprintf( $args->heading, $title );

    return $heading . $nav_menu;
}, 10, 2 );

结束

相关推荐

Wordpress Flyout Menus

我有一个有点复杂的菜单结构,我正试图找出最好的方法来做到这一点。I have a top nav 它有4个部分。每个部分最多有2层深。而且I have a SUB Nav 这是基于您所在的部分,并显示为向下钻取,显示您拥有的页面。例如,假设我单击第二级顶部导航-然后我将转到显示打开并选中该部分的子页面。我希望我的解释是正确的。。。谢谢我的问题是:最好的方法是什么。我研究了一些插件,但似乎找不到合适的插件。我不需要使用插件。