建站教程

建站教程

Products

当前位置:首页 > 建站教程 >

wordpress自定义分类列表增加栏目(wordpress搜索自定义字段(Custom Field)内容)

GG网络技术分享 2025-03-18 16:13 0


wordpress自定义分类列表增加栏目

当我们通过 register_post_type 此函数创建好自定义的分类后,会发现列表比较空,直接看列表不知道此文章属于创建的哪个分类,这若是增加个分类显示多好啊,下面我们就来说说如何增加。

需要用到两个钩子函数

代码实例

直接看代码不是那么复杂,我相信大家一看就会明白,不明白的可以加群问我

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

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

确实,文章自定义字段保存在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文件中即可。

标签:

提交需求或反馈

Demand feedback