附件上的自定义分类的元数据查询

时间:2016-08-05 作者:Kudos

我有一个自定义的分类法“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查询来解决这个问题,但是,我想知道元查询是否缺少一些东西?

1 个回复
最合适的回答,由SO网友:Krzysztof Grabania 整理而成

如果长度是分类法,为什么要查询元查询?代替meta_query 具有tax_query 在您的查询中,它应该开始工作。

相关推荐

从wp.media.editor.附件获取所选图像URL到文本输入失败。我做错了什么?

我已将媒体按钮作为post meta field 在以下情况下将图像URL插入文本字段Insert Into Page 单击按钮。它一直工作到打开“媒体存储库”窗口、选择“图像”和“插入”为止,但没有向输入字段传递任何值。Expected result结果应该是URL和媒体ID插入为https://avalon.com/dev/wp-content/uploads/2021/01/scp7147prko31.jpg|12 但没有返回值。我可以手动输入URL并保存数据。我彻底扫描了我的代码,并尝试了许多ja