一次查询不同格式的不同数量的帖子

时间:2018-04-07 作者:batollo

我想输出7个最新的状态帖子和5个最新的旁白帖子(他们应该在一个列表中从最新到最早排序)。但我不明白如何编写这样一个WP\\U Tax\\U查询。我尝试了以下方法,但没有达到预期效果:

$args = array(
\'relation\' => \'AND\',
array(
\'post_format\' => \'post-format-status\',
\'posts_per_page\' => 7,
),
array(
\'post_format\' => \'post-format-aside\',
\'posts_per_page\' => 5,
)
);
$q = new WP_Query($args);
if ( $q->have_posts() ) { 
while ( $q->have_posts() ) { $q->the_post(); the_title(); }
wp_reset_postdata();}

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

这在一个查询中是不可能的。不能为单个分类查询设置每页的帖子。

您可以同时查询12个状态或搁置帖子:

array(
    \'posts_per_page\' => 12,
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'post_format\',
            \'field\'    => \'slug\',
            \'terms\'    => array( \'post-format-status\', \'post-format-aside\' ),
        ),
    ),
)
或使用执行单独的查询get_posts() 使用每个结果所需的数字,合并结果,然后按日期对合并结果进行排序:

// Get statuses.
$statuses = get_posts( array(
    \'numberposts\' => 7,
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'post_format\',
            \'field\'    => \'slug\',
            \'terms\'    => \'post-format-status\',
        ),
    ),
) );

// Get asides.
$asides = get_posts( array(
    \'numberposts\' => 5,
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'post_format\',
            \'field\'    => \'slug\',
            \'terms\'    => \'post-format-aside\',
        ),
    ),
) );

// Merge results.
$posts = array_merge( $statuses, $asides );

// Sort results by comparing the dates.
uasort( $posts, function( $a, $b ) {
    return strtotime( $b->post_date ) - strtotime( $a->post_date );
} );

global $post;

foreach ( $posts as $post ) : setup_postdata( $post );

endforeach; wp_reset_postdata();

结束

相关推荐

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

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