我有一个自定义的分类法“length”,有3个值[\'long\'、\'medium\'、\'short\'],我已经将这个分类法附加到了附件(使用CPT UI)
在查看分类法时,我可以看到我已成功地将“long”添加到图像中,因为它显示“count=1”
但是,我的查询没有返回任何记录。
Array
(
[post_type] => attachment
[post_mime_type] => image
[post_status] => inherit
[posts_per_page] => -1
[meta_query] => Array
(
[0] => Array
(
[key] => length
[value] => Array
(
[0] => 26
)
[compare] => IN
)
)
)
如果我删除meta\\u查询,它会返回所有图像。我已经确认“long”分类记录的ID是26。我可以在wp\\U Posteta中看到,存在正确记录的值。
请求查询为:
SELECT wp_posts.* FROM wp_posts INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) WHERE 1=1 AND (wp_posts.post_mime_type LIKE \'image/%\') AND (
( wp_postmeta.meta_key = \'length\' AND CAST(wp_postmeta.meta_value AS CHAR) IN (\'26\') )
) AND wp_posts.post_type = \'attachment\' AND ((wp_posts.post_status = \'inherit\')) GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC
我可以看出,问题是meta\\u值存储为序列化对象,并且:
wp_postmeta.meta_key = \'length\' AND CAST(wp_postmeta.meta_value AS CHAR) IN (\'26\')
永远不会是真的。我可以编写一个自定义sql查询来解决这个问题,但是,我想知道元查询是否缺少一些东西?