除了原始SQL,我可以查询具有给定数组键的多个附件元数据吗?

时间:2014-03-02 作者:Dan

通过原始SQL$wpdb, 我相信我可以沿着这条路线做一些事情(未经测试):

SELECT post_id, meta_value
FROM postmeta
WHERE meta_key = \'_wp_attachment_metadata\'
AND meta_value LIKE \'%:"custom_key";a:%\'
也就是说,如果这种查询有内置的功能,那么我宁愿不要重新发明轮子。我所有的代码挖掘都只是返回了获取给定id或一组id的附件元数据的方法,这并不能满足我的需要。我还可以用这个特定的数组键保留ID列表,但我不想保留这些数据,因为它看起来像是额外的混乱。。。

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

而你可以用WP_Query, 我会以您试图避免的方式来执行此操作--将列表保存在单独的键中。在我看来,“赞成”远远超过“反对”。

  1. LIKE 使用通配符的查询,尤其是使用前导通配符的查询,效率不高--又名“slow”和LIKE 对序列化数据的查询很容易出错,您可能会在屏幕上运行此查询,这意味着用户会看到延迟,而。。。

    例如,在选项表中存储另一个值所需的“空间”可以忽略不计,而检索该值的查询也尽可能高效。数据保存后,工作几乎完全推送到后端,因此任何延迟都会被网站的管理员/作者看到,而不是普通用户看到

您可以使用核心功能添加和检索数据update_optionget_option, 后者有caching mechanisms built in.

SO网友:Nicolai Grossherr

你可以用WP_Query 通过使用meta_query 参数按如下所示操作。如果您使用attachment 作为的值post_type 参数,请记住:

默认的WP\\u查询设置“post\\u status”=>“publish”,但附件默认设置为“post\\u status”=>“inherit”,因此您还需要将post\\u status显式设置为“inherit”或“any”。(参见post_status, (见下文)

Type Parameter 第节WP_Query 法典第页。

$args = array(  
    \'post_type\' => \'attachment\',  
    \'post_status\' => \'inherit\',  
    \'post_per_page\' => -1,
    \'meta_query\' => array(  
        array(  
            \'key\' => \'_wp_attachment_metadata\',  
            \'value\' => \'your-key\',  
            \'compare\' => \'LIKE\'  
        )  
    )  
);  
$query = new WP_Query( $args );

结束

相关推荐

如何通过$wpdb返回具有特定自定义字段值的自定义帖子类型帖子的计数?

我正在尝试从wpdb获取具有特定自定义字段值的自定义帖子类型的计数,而无需执行WP\\U查询或get\\U posts,因为我认为这更节省资源,并且我需要在一个页面上为10个不同的值返回10个不同的计数。我无法得到正确的计数来显示。返回了一个数字,但它是错误的。代码如下:$meta_value = key($choices); $count = $wpdb->get_var( $wpdb->prepare (