- A+
自定义字段是WordPress中非常强大的功能之一,在通过使用自定义帖子类型来扩展WordPress时,这个功能特别有用。我在开发OneNav主题时,创建了很多自定义字段,为帖子添加细节,比如收藏网址的Url地址,App的版本,书籍的刊号等等。不幸的是,WordPress 搜索页不能搜索出自定义字段的内容。为了解决这个问题,需要修改WordPress的搜索查询以包括自定义字段。
这里我贴出俩种方法共大家选择,分别为LEFT JOIN和EXISTS。
LEFT JOIN 方法
此方法分为三步
1、Left Join
默认情况下,WordPress 搜索功能设置为仅搜索posts表,为了在我们的搜索中包含自定义字段数据,我们首先需要对数据库中的postmeta表执行左连接。
2、修改查询条件
修改 WordPress 的搜索查询包含自定义字段。
3、防止重复
此方法查询出的数据会产生重复项,我们需要在 SQL 查询中添加 DISTINCT 关键字,以防止返回重复项。
完整代码如下:
EXISTS 方法
使用方法
使用方法很简单,还是万年不变的将上面俩种方法的任意一种代码添加到WordPress主题的“functions.php”文件中即可。
此代码不仅会修改前端的搜索,而且同时应用在了后端,你可以在后台文章列表搜索到自定义字段中包含搜索值的文章。
代码中$meta_key为需要查询的自定义字段,自定义字段非常多,把你想要检索到的字段添加到这个变量里面
区别&性能
如果你就几百篇文章,上面方法随便选;如果文章很多,根据我在一个 postmeta 表7w数据和 posts 表6k数据的数据库中测试,EXISTS 方法比 LEFT JOIN 基本上快一半的时间,数据库知识薄弱,如果有啥不对的地方,欢迎指正。
- 我的微信
- 这是我的微信扫一扫
-
- 我的微信公众号
- 我的微信公众号扫一扫
-

![安装2023年10月更新后,继续在Win10上使用IE的方法[20240305仍有效]](http://anyun.org/wp-content/themes/anyun_begin/timthumb.php?src=https://anyun.org/wp-content/uploads/2024/03/204380.png&w=280&h=210&a=&zc=1)


