问题描述

感谢在这里的一些帮助,我设法添加一个自定义搜索框到我的主菜单… 添加到我的主题的 functions.php

add_filter('wp_nav_menu_items','search_box_function');
  function search_box_function ($nav){
  return $nav."<li class='menu-header-search'><form action='http://example.com/' id='searchform' method='get'><input type='text' name='s' id='s' placeholder='Search'></form></li>";
}

不过,我现在添加了另一个菜单来放入页脚,但搜索框也被添加到这个。仅如何将搜索框添加到主菜单?

我的注册菜单代码是:

register_nav_menus( array(
  'primary' => __( 'Primary Navigation', 'twentyten' ),
  'secondary'=>__('Secondary Menu', 'twentyten' ),

 ) );

.. 和显示次级菜单的代码是:

wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'secondary' ) ); 

最佳解决方案

要仅将自定义搜索框添加到主菜单,您可以传递 wp_nav_menu_items 过滤器提供的第二个参数,并检查 theme_location 是否是主要位置

add_filter('wp_nav_menu_items','search_box_function', 10, 2);
function search_box_function( $nav, $args ) {
    if( $args->theme_location == 'primary' )
        return $nav."<li class='menu-header-search'><form action='http://example.com/' id='searchform' method='get'><input type='text' name='s' id='s' placeholder='Search'></form></li>";

    return $nav;
}

次佳解决方案

另一种方法是将菜单添加到 wp_nav_menu_items 过滤器。

例如,假设您有一个名为 Header 的菜单,并且您始终希望此菜单 (无论是否连接到主题位置) 以显示搜索框。您可以通过将菜单块 (在本例中为 header) 添加到过滤器中。

新的过滤器将如下所示:


add_filter( 'wp_nav_menu_header_items', 'search_box_function' );

注意新的过滤器的 header 部分。这告诉 WordPress 什么菜单来添加功能。

这只是解决您当前问题的一种不同的方法。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。