@rockmandew 是对的 - 如果不将 get_search_form() 设置为 false,则该代码不应该工作。但即使进行了更改后,该功能也无法运行。
我最初通过将其添加到我的函数文件中来将搜索表单添加到我的导航菜单中:
/**
* Add search box to nav menu
*/
function wpgood_nav_search( $items, $args ) {
$items .= '<li>' . get_search_form( false ) . '</li>';
return $items;
}
add_filter( 'wp_nav_menu_items','wpgood_nav_search', 10, 2 );
如果您只有一个菜单或希望将搜索框添加到所有菜单,这是一个很好的解决方案。就我而言,我只想在主菜单中添加一个搜索框。为了实现这一点,我这样做了:
/**
* Add search box to primary menu
*/
function wpgood_nav_search($items, $args) {
// If this isn't the primary menu, do nothing
if( !($args->theme_location == 'primary') )
return $items;
// Otherwise, add search form
return $items . '<li>' . get_search_form(false) . '</li>';
}
add_filter('wp_nav_menu_items', 'wpgood_nav_search', 10, 2);
值得注意的是,我的主导航在我的函数文件中被命名为“primary”。这可能因主题而异,因此需要相应更改,即“main”或如初始解决方案中的“header_menu”。