问题描述
感谢在这里的一些帮助,我设法添加一个自定义搜索框到我的主菜单… 添加到我的主题的 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。