WP_NAV_MENU筛选器针对所有菜单

时间:2014-06-18 作者:Carlos E Silva

我试图通过插件替换模板的主菜单,这样我就不必更改标题。php。

我在2011年这里回答的另一个问题中发现了此代码(Replacing WordPress menu functionality with a plugin)

add_filter(\'wp_nav_menu\', \'my_menu_func\');
function my_menu_func(){
  print "Testing 123";
}
它工作了,但它同时替换了我的顶部主菜单和小部件侧菜单。

使用过滤器时,如何指定目标菜单?

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

您可以尝试以下代码段来覆盖主菜单:

/**
 * Override the primary menu.
 *
 * @param string  $nav_menu The HTML content for the navigation menu.
 * @param array   $args     Array of wp_nav_menu() arguments.
 * @return string $nav_menu
 */

function wpse_150003( $nav_menu, $args )
{
    //Override the primary menu:
    if( \'primary\' === $args->theme_location )
        $nav_menu = \'My new menu\';

    return $nav_menu;
}

add_filter( \'wp_nav_menu\', \'wpse_150003\', PHP_INT_MAX, 2 );
在这里,我们可以从source.

请注意,我们return 这个$nav_menu 值,而不是echoing 信息技术

您还可以过滤我的其他属性,例如menu_id.

您还可以考虑以下过滤器:

  • wp_nav_menu_items
  • wp_nav_menu_{$menu->slug}_items
结束

相关推荐

Problem with custom menus

在菜单上,我说的是自定义菜单,我有一个带有几列的页脚,每列都有一个项目列表,每列菜单都需要从wp admin上的菜单选项进行更新,所以我创建了关于函数的部分。调用菜单并在页脚上添加每个菜单的php。php文档,类似于:<?php wp_nav_menu( array(\'menu\' => \'f-1\', \'menu_class\' => \'\', \'container\' => \'nav\' )); ?> <?php wp_nav_menu( arr