wordpress搜索自定义字段(Custom Field)内容

网站搜索搜产品标题能搜出结果,但是如果搜索产品编号是搜不出结果的,对于用户的体验不是很好。确实,文章自定义字段保存在post

网站搜索搜产品标题能搜出结果,但是如果搜索产品编号是搜不出结果的,对于用户的体验不是很好。

确实,文章自定义字段保存在postmeta表中,而wordpress搜索仅会搜索文章表即posts表。

第一步:链接查询

也就是修改搜索查询的sql代码,将postmeta表左链接进去。

functioncf_search_join($join){

global$wpdb;

if(is_search()){

$join.=’LEFTJOIN’.$wpdb->postmeta.’ON’.$wpdb->posts.’.ID=’.$wpdb->postmeta.’.post_id’;

}

return$join;

}

add_filter(‘posts_join’,’cf_search_join’);

第二步:查询代码

functioncf_search_where($where){

global$pagenow,$wpdb;

if(is_search()){

$where=preg_replace(

“/\(\s*”.$wpdb->posts.”.post_title\s+LIKE\s*(\'[^\’]+\’)\s*\)/”,

“(“.$wpdb->posts.”.post_titleLIKE$1)OR(“.$wpdb->postmeta.”.meta_valueLIKE$1)”,$where);

}

return$where;

}

add_filter(‘posts_where’,’cf_search_where’);

第三步:去重

搜索结果很有可能有重复的,所以需要去重,很简单,在sql语句中加入DISTINCT关键字。

functioncf_search_distinct($where){

global$wpdb;

if(is_search()){

return”DISTINCT”;

}

return$where;

}

add_filter(‘posts_distinct’,’cf_search_distinct’);

总结:

依次将上面三步骤中的代码加入到主题的functions.php文件中即可。


下载说明:
1. 本站所有资源来源于网络和用户上传,如有侵权请联系站长
2. 本站分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,商用请支持正版!不得违反国家法律,否则后果自负!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!

本站的资源均来自于互联网,仅为资源共享、学习参考之目的,其版权均归原作者及其网站所有,如有侵权请留言联系:admin,转转请注明出处:http://zhanmr.com/6434.htm

发表评论

电子邮件地址不会被公开。 必填项已用*标注