查询具有不同偏移量的多个类别

时间:2014-03-29 作者:robobobobo

在我的网站上,我有一个“突发新闻”部分,其中显示了“突发新闻”类别中最近的4个故事。

在这下面,我有一个特色新闻部分,其中显示了“突发新闻”类别中的另外5个故事。我只需在WP\\u查询中将偏移量设置为4即可获得这些帖子

我想做的是对特色新闻部分进行调整。因此,它仍然会从突发新闻中抽取5篇最新的报道,但如果一篇报道被添加到“特色新闻”类别中,它就会将其纳入。

一些psedou代码类似于

Get the 5 latest posts from Breaking News with Offset of 4 and from Featured News with Offset 0
这样写似乎很简单,但我似乎无法真正实现它。我无法让WP\\U查询接受一个类别而不是另一个类别的偏移量。

我试过这个

$featuredPosts = new WP_Query( array(
\'posts_per_page\' => 5,
\'cat\' => 169,
\'offset\' => 4
), 
array(
\'posts_per_page\' => 5,
\'cat\' => 172,
\'offset\' => 0) );
但这只给出了cat 169中的前5篇帖子,而忽略了172中的第二个查询数组。

我还尝试存储“突发新闻”中已经输出的帖子的所有id,然后不再输出它们,这样我可以进行更简单的查询(从Breaking&featured中获取最后5条),但问题是,它不会总是输出5条帖子,因为它会排除一些突发新闻。

也许我想得太多了,还有一个更简单的方法,有人有什么想法吗?

1 个回复
SO网友:Jon Sisk

我在一个特色栏目上也遇到了类似的问题,最终还是这样做了

首先在循环外创建数组变量:

$exclude_us = array()
然后将第一个循环中每个帖子的ID添加到数组中(第一个循环中):

if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post();
    $exclude_us[] = get_the_id
    ...the rest of the loop...
然后在第二个循环中,如果帖子具有该ID,请跳过它(继续):

if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post();
    if ( in_array ( get_the_id(), $exclude_us ) ) {
        continue;
        }
    ...the rest of the loop...

结束