首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WP_Query:只包括具有特定元值的自定义post类型

WP_Query:只包括具有特定元值的自定义post类型
EN

WordPress Development用户
提问于 2018-02-21 10:02:01
回答 1查看 1.7K关注 0票数 1

对于WP_Query,我有以下参数:

代码语言:javascript
复制
$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'
        )
    ),
);

现在,我想在循环中添加自定义post类型cpt-3,但前提是其post的自定义元key-2的自定义字段值设置为1。

有可能吗?

EN

回答 1

WordPress Development用户

发布于 2018-02-21 10:10:33

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

代码语言:javascript
复制
array(
    'key'     => 'key-2',
    'value'   => 1,
    'compare' => '='
)

如果没有,您可以运行另一个查询,然后按如下方式合并它们:

代码语言:javascript
复制
$final_query = array_merge( (array) $query_1, (array) $query_2 );

但是,您应该使用get_posts()而不是WP_Query(),因为您不能将对象与方法合并。get_posts()返回一个可以合并的帖子数组。

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

票数 1
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/294695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档