WP_QUERY元_按数组键查询

时间:2013-05-12 作者:Julie CodeRiver

我有一个自定义的post类型,它的meta位于一个数组中。我需要做的是基于该元数组中键的值进行查询。

$args = array(
    \'post_type\'         => \'my-cpt\',
    \'posts_per_page\'    => -1,
    \'orderby\'           => \'meta_value\',          // Sort by this value
    \'meta_key\'          => \'my_meta_array\',       // Sort by this meta key
    \'meta_query\'        => array(
        array(
            \'key\'       => \'key here\',            // WHAT GOES HERE?
            \'value\'     => array( \'meta-value\' ),
        )
    )
);    

$query = new WP_Query( $args );
如果my key是my\\u meta\\u array[key],那么meta\\u query key中会有什么内容?

仅供参考:密钥由my\\u meta\\u array[密钥]索引,通过update\\u post\\u meta($post\\u id,\'river\\u helpers,\'my\\u meta\\u array\')存储在数据库中,并通过get\\u post\\u meta($post->id,\'my\\u meta\\u array\',true)检索;

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

你不能那样做。当您保存Posteta(或任何其他元数据)时,WordPress会运行它maybe_serialize 将对象和数组转换为serialized data. 当它被拉出时,它会被贯穿maybe_unserialize.

序列化数据如下所示:

a:1:{s:3:"one";s:3:"two";}
换句话说,get存储的内容不能以您想要的方式进行查询。你所能做的就是LIKE 查询,这最多也不可靠,性能也较差。仅使用LIKE as the compare argument of your meta query.

你的最佳选择:重新思考如何存储元并移动任何内容key 是它自己的入口。WordPress中的元表是键值存储,每个帖子类型或插件存储多个元值并不是不合理的。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post