WP_QUERY:仅包含具有特定元值的自定义帖子类型

时间:2018-02-21 作者:MKay

对于WP\\U查询,我有以下参数:

$args = array(
    \'post_type\' => array( \'cpt-1\', \'cpt-2\' ),
    \'post_status\' => \'publish\',
    \'posts_per_page\' => 9,
    \'meta_query\' => array(
        \'relation\' => \'OR\',
        array(
            \'key\' => \'key-1\',
            \'compare\' => \'NOT EXISTS\'
        ),
        array(
            \'key\' => \'key-1\',
            \'value\' => 1,
            \'compare\' => \'!=\'
        )
    ),
    \'tax_query\' => array(
        \'relation\' => \'AND\',
        array(
            \'taxonomy\' => \'ctax-1\',
            \'field\' => \'slug\',
            \'terms\' => \'term-1\',
            \'operator\' => \'NOT IN\'
        ),
        array(
            \'taxonomy\' => \'ctax-2\',
            \'field\' => \'slug\',
            \'terms\' => \'term-2\',
            \'operator\' => \'NOT IN\'
        )
    ),
);
现在,我想向循环中添加自定义帖子类型cpt-3 但仅当其帖子具有自定义meta的自定义字段值时key-2 设置为1。

有可能吗?

1 个回复
SO网友:Johansson

如果key-2 唯一分配给cpt-3 post类型,然后可以向查询参数添加另一个元查询参数:

array(
    \'key\'     => \'key-2\',
    \'value\'   => 1,
    \'compare\' => \'=\'
)
如果没有,则可以运行另一个查询,然后按如下方式合并它们:

$final_query = array_merge( (array) $query_1, (array) $query_2 );
但是,您应该使用get_posts() 而不是WP_Query() 因为无法将对象与方法合并。这个get_posts() 返回可以合并的帖子数组。

然而,你应该注意到,元查询是昂贵的,并会减慢你的网站(可能)。

结束

相关推荐

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

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