在主页上按顺序仅显示来自3个类别的前3个帖子

时间:2015-05-05 作者:buksida

此功能将在首页显示任何类别的最后3篇帖子:

  // Only top 3 posts from CHR category
  add_action(\'pre_get_posts\', \'ad_filter_categories\');
  function ad_filter_categories($query) {
  if ($query->is_main_query() && is_home()) {
  $query->set(\'category_name\',\'chatham-house-rules\');
  $query->set(\'showposts\', 3);
}
我想用另外两个类别再做两次,但它只会用一个类别。它还默认为管理面板中的posts\\u per\\u page设置。有什么想法可以让我在头版按特定顺序从3个类别中获得3篇最新帖子吗?

2 个回复
SO网友:Jon Black

有多种方法可以做到这一点,但如果我是你,我会考虑这样做。在index.php 或者,无论帖子出现在什么页面上,请使用不同的类别分别执行以下三次操作:

$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$arguments = array(
    \'category_name\' => \'category\'
    \'posts_per_page\' => 3,
    \'paged\' => $paged
);
$wp_query->query($arguments);
if (have_posts()) :
   while (have_posts()) : the_post();
       the_content();
    endwhile;
endif;
Thecategory_name 可以是逗号分隔的字符串,该字符串应允许您具有三个或更多类别。

这个paged 以这种方式设置每页的帖子时,需要参数。如果不这样做,那么这些帖子就不会正确显示在后续的帖子页面上。

这个WP_Query reference, 显示查询中可以使用的所有筛选器。它还提供了另一种使用查询的方法。

SO网友:cjbj

WP_Query 允许您定义大量复杂的选择标准,以匹配各个帖子。然而,您需要的实际上是查询返回的完整集合的一个标准。这就给您留下了两种可能的方法:

使用一个查询返回足够数量的帖子,这样可以确保每个类别中至少有一篇帖子。然后在该集合中循环选择每个类别的第一个帖子

结束

相关推荐

Sorting Posts by custom field

我正在尝试按自定义字段对帖子进行排序artwork_title. 当我使用下面的代码时,我只会得到一个特定类别的帖子,无论我在哪个类别的存档中。此外,分页显示正确的页数,但转到下一页时始终显示相同的帖子集。有人知道我做错了什么吗?<?php $query = new WP_Query( array( \'posts_per_page\' => 20, \'orderby\' => \'meta_value\',