大家都知道WordPress 作为一个非常成熟的博客系统,功能可以说是非常强大,几乎整个网站都可以进行定制开发,已经不算是一个博客系统了而应该是一个成熟的开发框架
最近就用WP给客户开发了一个网站,但客户提了一个需要,简单说就是在后台搜索时添加一个自定义的字段
WP在后台的评论搜索时默认只匹配以下字段,具体请参见:
-
comment_approvedcomment_approvedcomment_authorcomment_author_emailcomment_author_urlcomment_author_IPcomment_content
在网络上找了半天也没有找到如何自定义后台评论搜索条件的方法,无奈只得自己写源码,于是发现了" comments_clauses"这个filter,然后通过这个 filter添加自定义的搜索条件,将以下代码添加到functions.php
中并更改自定义表和条件
-
//添加自定义后台评论搜索条件function comment_list_by_customer_search($clauses){global $user_ID, $wpdb;$s=$_REQUEST['s'];//搜索条件//搜索条件为空,不处理if(empty($s)|| strlen($s)<=0)return $clauses;//自定义表和条件//更改为自己的查询条件$clauses['where'].=" or `comment_ID` in (select o.cid from ".$wpdb->get_blog_prefix()."orders o where o.OrderID like '%$s%' or o.PNAME like '%$s%' or o.PayOrder like '%$s%')";return $clauses;}add_filter('comments_clauses','comment_list_by_customer_search');
有图有真相:
订单列表实际上使用的是评论加自定义表orders实现的,原因是在后台添加一个自定义管理页面比较麻烦,所以直接关联评论表的免得在后台做这些事情了(如搜索,列表,添加新页面等),系统评论使用的是多说
生成的SQL,使用
参考: