多亏了这里的帮助,我成功地在主菜单中添加了一个自定义搜索框。。。通过将其添加到我的主题函数中。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\' ) );
最合适的回答,由SO网友:ampt 整理而成
要仅将自定义搜索框添加到主菜单,可以传递wp\\u nav\\u menu\\u items过滤器提供的第二个参数,并检查主题位置是否为主位置
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;
}
SO网友:Justin Kopepasah
另一种方法是将菜单slug添加到wp\\u nav\\u menu\\u items过滤器中。
例如,假设您有一个名为Header的菜单,并且始终希望此菜单(无论是否附加到主题位置)显示一个搜索框。在这种情况下,可以通过添加菜单slug来实现header
, 至过滤器。
新过滤器如下所示:
add_filter( \'wp_nav_menu_header_items\', \'search_box_function\' );
注意
header
新过滤器的一部分。这会告诉WordPress要向哪个菜单添加功能。
这只是解决当前问题的一种不同方法。