所以我正面临着我正在努力的WordPress项目的挑战,我希望有人可以给我一个关于实现这一目标的最佳方法的提示。所以我在自定义帖子类型上使用高级自定义字段,我有大约10个不同的字段。我必须构建一个需要匹配高级自定义字段中的值的搜索并返回帖子ID。
自定义字段将其数据存储在wp_postmeta表中,看起来像这样:
+------------------------------------------+
|meta_id | post_id | meta_key | meta_value |
|------------------------------------------|
| 1 | 24 | state | CA |
| 2 | 24 | city | Yuba City |
| 3 | 24 | type | Full time |
+------------------------------------------+
(还有更多,但保持简短)。
因此,如果我的搜索字段是“状态”,“城市”和“作业类型”,并且所有三个都填写,我需要发生的是,如果所有三个元值都与搜索到的内容相匹配,则返回post_id。
我从来没有做过这样的事情,因为他们在多行中,所以我不完全确定我会怎么做。
答案 0 :(得分:1)
一种方法使用聚合。一种方法使用join
。例如:
select ps.post_id
from wp_postmeta ps join
wp_postmeta pc
on ps.post_id = pc.post_id and
ps.meta_kay = 'state' and ps.meta_value = 'CA' and
pc.meta_key = 'city' and pc.meta_value = 'Yuba City' join
wp_postmeta pt
on pt.post_id = ps.post_id and
pt.meta_key = 'type' and pt.meta_value = 'Full time';