两个帖子类型的wp_query,一个具有自定义字段以进一步过滤

时间:2014-03-27 09:39:35

标签: wordpress custom-post-type

这是我在这里的第一个问题;我一直在寻找答案,但如果它已经出现在那里已经道歉。

我使用wp_query()来获取“帖子”和名为“评论”的自定义帖子类型。但是,自定义帖子类型有一个子类型,我需要过滤掉所有这些子类型中的所有子类型,仅用于同一查询中的评论!

这就是我要去的地方:

$type = array( 'post', 'review' );
$args=array(
    'post_type' => $type,
    'post_status' => 'publish',
        'posts_per_page' => 20,
        'paged' => $paged,
        'meta_query' => array( // I need to filter the review post type further by subtype
            array(
                'key' => 'subtype',
                'value' => 'review'
            ),
        ),
    'orderby' => 'post_date', // Order by date
    'order' => 'DESC',
  );

显然,当我运行此时,未列出默认的帖子类型,因为它没有子类型自定义字段。如何才能将此过滤器(meta_query)应用于此查询中的自定义帖子类型,而不是将其应用于默认帖子类型“post”?

先谢谢了, 克里斯...

更新:

好的,我试过这个但没有成功 - 有什么想法吗?

$args=array(
    'post_type' => $type,
    'post_status' => 'publish',
        'posts_per_page' => 20,
        'paged' => $paged,
        'meta_query' => array( 
            'relation' => 'OR',
            array(
                'key' => 'subtype',
                'compare' => 'NOT EXISTS',
            ),
            array(
                'key' => 'subtype',
                'value' => 'review',
            ),
        ),
    'orderby' => 'post_date', // Order by date
    'order' => 'DESC',
  );

1 个答案:

答案 0 :(得分:0)

只有在帖子中存在(未测试)

时才会检查'子类型'
$type = array( 'post', 'review' );
$args=array(
    'post_type' => $type,
    'post_status' => 'publish',
        'posts_per_page' => 20,
        'paged' => $paged,
        'meta_query' => array( 
            'relation' => AND,
            array(
                'key' => 'subtype',
                'compare' => 'EXISTS'
            ), 
            array(
                'key' => 'subtype',
                'value' => 'review'
            ),
        ),
    'orderby' => 'post_date', // Order by date
    'order' => 'DESC',
  );