WP Query post meta value

时间:2014-11-18 作者:pbaldauf

我正在尝试获取应用了元值的帖子trainees.

$args = array(
    \'posts_per_page\'   => -1,
    \'orderby\'          => \'post_date\',
    \'order\'            => \'DESC\',
    \'post_status\'      => \'publish\',
    \'meta_query\' => array(
        array(
            \'key\'     => \'enterprise_on_page\',
            \'value\'   => array( \'trainees\' ),
            \'compare\' => \'IN\',
        ),
    ),
);

$enterprise_posts = get_posts( $args );

在我的meta字段中,在\\u页上的键为enterprise\\u我存储了一个数组()之前类似的update_post_meta( $post_id, \'enterprise_on_page\', array(\'trainees\', \'staff\') );.<如果我打电话var_dump(get_post_meta($post->ID)) 我得到以下输出:

\'enterprise_on_page\' => 
    array (size=1)
      0 => string \'a:2:{i:0;s:8:"trainees";i:1;s:7:"staff";}\' 

我如何修改我的查询以便只发布具有元值的帖子trainees 如图所示。到现在为止,我没有收到任何帖子。

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

感谢@Howdy\\u McGee。他暗示我要照顾他serialized meta queries. 使用此代码,我得到了所需的结果。

$args = array(
    \'posts_per_page\'   => -1,
    \'orderby\'          => \'post_date\',
    \'order\'            => \'DESC\',
    \'post_status\'      => \'publish\',
    \'meta_query\' => array(
        array(
            \'key\'     => \'enterprise_on_page\',
            \'value\'   => serialize(strval(\'trainees\')),
            \'compare\' => \'LIKE\',
        ),
    ),
);

$enterprise_posts = get_posts( $args );

SO网友:Howdy_McGee

我认为你不能准确地比较Serialized Array, 每当将数组传递给update_post_meta, 您需要在循环过程中使用

get_post_meta( $post->ID, \'enterprise_on_page\', 1 )

如果需要根据这些值指定查询,最好将它们单独保存。

查看此问题以了解更多信息:

meta_query with meta values as serialize arrays

SO网友:John P Bloch

由于您的数据目前是结构化的,所以不能使用SQL来实现这一点(至少不能以高性能的方式)。您有两种选择:

获取所有帖子并在内存中循环查找正确的帖子元数据,或者单独存储元数据

当你拿到博文元时

get_post_meta($ID, \'enterprise_on_page\', false);

更新将是最不同的。如果只想附加一个值,请执行以下操作

add_post_meta($ID, \'enterprise_on_page\', $value);

要更新值,

update_post_meta($ID, \'enterprise_on_page\', $new_value, $old_value);

并删除一个值:

delete_post_meta($ID, \'enterprise_on_page\', $value_to_delete);

结束

相关推荐

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

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