最新活动:买一送一!升级会员,最高返 500 抵扣券! 立即查看

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

网站搜索搜产品标题能搜出结果,但是如果搜索产品编号是搜不出结果的,对于用户的体验不是很好。确实,文章自定义字段保存在postmeta表中,而wordpress搜索仅会搜索文章表即posts表。第一步:链接查询也就是修改搜索查询的sql代码,将postmeta表左链接进去。functioncf_search_join($...

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

确实,文章自定义字段保存在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&#8217😉;

第二步:查询代码

functioncf_search_where($where){

global$pagenow,$wpdb;

if(is_search()){

$where=preg_replace(

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

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

}

return$where;

}

add_filter(‘posts_where’,’cf_search_where&#8217😉;

第三步:去重

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

functioncf_search_distinct($where){

global$wpdb;

if(is_search()){

return”DISTINCT”;

}

return$where;

}

add_filter(‘posts_distinct’,’cf_search_distinct&#8217😉;

总结:

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

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
wordpress教程

如何在RHEL8或CentOS8上配置NTP服务器和客户端

2023-2-16 15:59:51

wordpress教程

wordpress多语言企业网站内容注意事项

2023-2-16 15:59:53

!
你也想出现在这里?立即 联系我们吧!
信息
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
搜索