在我的网站上,我有一个“突发新闻”部分,其中显示了“突发新闻”类别中最近的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条帖子,因为它会排除一些突发新闻。
也许我想得太多了,还有一个更简单的方法,有人有什么想法吗?
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...