在Wordpress中添加add_filter,我怎么知道它是否运行?

时间:2014-03-18 22:22:45

标签: php wordpress debugging

我正在尝试在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设置的。所以现在我将尝试理解为什么以及这意味着什么。 ; - )

3 个答案:

答案 0 :(得分:1)

我刚刚在WPSE上做了一个完整的答案,让每个人都去看看。希望这能帮助所有人进行stackoverflow。

Debugging - trying to add search box to menus

答案 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)

More info Go

  1. 在function.php。

  2. 中添加此代码
  3. 这会显示在标题菜单上。

  4. 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;
    }
    

    enter image description here