我想在Wordpress的主菜单中添加一个搜索框。根据网上的一些帖子,可以这样做:
add_filter('wp_nav_menu_items','menu_search');
function menu_search($items){
$search = '<li class="search">';
$search .= '<form method="get" id="searchform" action="/">';
$search .= '<input type="text" class="field" name="s" id="s" placeholder="Search" />';
$search .= '</form>';
$search .= '</li>';
return $items . $search;
}
由于某些原因无法工作,菜单中没有搜索框。我不习惯PHP和PHP的调试,所以我刚刚安装了这个插件调试。它显示了上面的函数menu_search确实在wp_nav_menu_items上。
我该如何深入研究这个?
更新:我使用调试栏+调试我的插件。它们似乎是非常好的工具。所以我发现了问题:菜单不是WP所期望的。所以这个过滤器没有运行。事实上,菜单是由wp_page_menu设置的。现在我要试着理解为什么会这样,这意味着什么。: -)
我刚刚做了一个关于WPSE的完整答案,让大家去看看。希望这篇文章能对大家有所帮助。
调试-尝试在菜单中添加搜索框
一种快捷的方法是在'hook '函数中调用error_log(),如下所示:
add_filter("the_filter_name", "the_function_name", 10, 4);
function the_function_name($p1, $p2, $p3, $p4)
{
error_log(__FUNCTION__ . "'n", 3, "/tmp/plugin.log");
}
你可以用一些时间戳信息和换行字符来包装error_log
// simple debug function
function plugin_debug($msg)
{
error_log( $msg . "'n", 3, "/tmp/plugin.log");
}
-
将此代码添加到function.php中。
-
显示在标题菜单上。
add_filter('wp_nav_menu_items','menu_search'); function menu_search($items){ $search = '<li class="search">'; $search .= '<form method="get" id="searchform" action="'.site_url().'/">'; $search .= '<input type="text" class="field" name="s" value="'.get_search_query().'" id="s" placeholder="Search" />'; $search .= '</form>'; $search .= '</li>'; return $items . $search; }
更多信息