如何通过SQL查询WordPress自定义文章类型stock的ACF自定义字段值?
WordPress自定义文章类型ACF字段SQL查询方案
错误原因
你原有SQL的子查询未与外层文章表做ID关联,数据库无法匹配当前文章对应的自定义字段值,因此返回NULL。
正确查询语句
推荐使用LEFT JOIN的方式实现多字段查询,可读性和兼容性更高:
SELECT p.post_title, pm1.meta_value AS prix, pm2.meta_value AS ville, pm3.meta_value AS 'nombre de chambres' FROM mod803_posts p -- 关联价格字段 LEFT JOIN mod803_postmeta pm1 ON p.ID = pm1.post_id AND pm1.meta_key = 'prix' -- 关联城市字段 LEFT JOIN mod803_postmeta pm2 ON p.ID = pm2.post_id AND pm2.meta_key = 'ville' -- 关联房间数字段 LEFT JOIN mod803_postmeta pm3 ON p.ID = pm3.post_id AND pm3.meta_key = 'nombre de chambres' WHERE p.post_type = 'stock' AND p.post_status = 'publish' ORDER BY p.post_date DESC;
补充说明
如果需要新增其他自定义字段,按照上述LEFT JOIN的格式新增关联即可,关联条件必须同时指定post_id(和外层文章表ID匹配)和meta_key(对应ACF字段名)。
如果你更习惯使用子查询写法,只需要在子查询中补充ID关联即可:
SELECT post_title, (SELECT meta_value FROM mod803_postmeta WHERE post_id = p.ID AND meta_key = 'prix') AS prix, (SELECT meta_value FROM mod803_postmeta WHERE post_id = p.ID AND meta_key = 'ville') AS ville, (SELECT meta_value FROM mod803_postmeta WHERE post_id = p.ID AND meta_key = 'nombre de chambres') AS 'nombre de chambres' FROM mod803_posts p WHERE p.post_type='stock' AND p.post_status='publish'
内容的提问来源于stack exchange,提问作者Romain Plantureux
相关产品推荐
相关产品推荐

