Wordpress-如何为两个不同的类别设置每页不同的帖子


Wordpress - How to set different posts per page number for two different categories?

在Wordpress网站上,我有两类:新闻俱乐部。如何将新闻类别的每页帖子数设置为10,将club分类的每页帖子数量设置为4?

我已在"设置">"阅读"中将每页的帖子数设置为10,新闻按我的意愿运行,但不是俱乐部

我在俱乐部类别中有一个自定义循环,我将posts_per_page设置为4。在club.php类别中,我有

$args=array(
    'category_name'=>'club',
    'post_type' => 'post',
    'post_status' => 'publish',
    'posts_per_page' => 4,
    'orderby' => 'date',
    'order' => 'desc',
    'paged' => ((get_query_var('paged')) ? get_query_var('paged') : 1)
  );

但当我切换到这个类别的帖子的第2页时,就会出现问题。我得到404错误。我想这是因为我在这个类别中的职位不到10个。

有人能告诉我该怎么做才能让第二页和下一页工作吗?

您不应该运行自定义查询来代替主查询。它们总是会导致更多的问题,正如你所经历的那样,分页总是其中之一。此外,在主查询的位置运行自定义查询会减慢页面的速度,所以这总是一个松散的情况。

如果您需要更改主查询中的某些内容,请使用pre_get_posts来实现所需内容。您可以尝试以下操作:(只需记住返回类别页面中的默认循环

add_action( 'pre_get_posts', function ( $q )
{
    if (    !is_admin() // Only target the frontend
         && $q->is_main_query() // Only target the main query
         && is_category() // Only target category pages
    ) {
        if ( is_category( 'news' ) )
            $q->set( 'posts_per_page', 10 );
        if ( is_category( 'club' ) )   
            $q->set( 'posts_per_page', 4 );
    }
});