我正在尝试在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的调试,所以我只是安装了插件Debug This。它向我展示了上面的函数menu_search确实在wp_nav_menu_items上。
我该如何深入研究?
更新:我使用了Debug Bar + Debug My Plugin。它们似乎是非常好的工具。所以我发现了问题:菜单不是WP所期望的。所以这个过滤器没有运行。实际上菜单是由wp_page_menu设置的。所以现在我将尝试理解为什么以及这意味着什么。 ; - )
答案 0 :(得分:1)
我刚刚在WPSE上做了一个完整的答案,让每个人都去看看。希望这能帮助所有人进行stackoverflow。
答案 1 :(得分:1)
快速而肮脏的方法是在“勾结”内召唤 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");
}
您可以使用一些时间戳信息和换行符char包装error_log。
// simple debug function
function plugin_debug($msg)
{
error_log( $msg . "\n", 3, "/tmp/plugin.log");
}
答案 2 :(得分:0)
在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; }