簡體   English   中英

更改連續類別頁面上的帖子數量(Wordpress)

[英]Change number of posts on consecutive category pages (Wordpress)

我正在嘗試更改在連續頁面上更改類別頁面上顯示的帖子數量(第2,3頁等)。 因此,第一頁顯示7個帖子,但該類別的第2,3和4頁等每頁僅顯示6個帖子(即,當您單擊“下一頁”列出較舊的帖子時)。

我知道更改不同類別/存檔頁面的帖子數量相對簡單 - 但這是不同的,因為我希望分頁頁面具有不同數量的帖子。

有任何想法嗎?

這是我最近在WPSE上做的回答。 我已經做了一些改變以滿足您的需求。 您可以在這里查看該帖子

第1步

如果您更改了自定義查詢的主查詢,請將其更改回默認循環

<?php

        if ( have_posts() ) :
            // Start the Loop.
            while ( have_posts() ) : the_post();

                ///<---YOUR LOOP--->

            endwhile;

                //<---YOUR PAGINATION--->   

            else : 

                //NO POSTS FOUND OR SOMETHING   

            endif; 

    ?>

第2步

使用pre_get_posts更改主查詢以更改類別頁面上的posts_per_page參數

第3步

現在,從后端(我假設為6)設置posts_per_page選項,並設置我們將要使用的offset 那將是1因為你需要在第一頁上有7個帖子,在其余時間需要6個帖子

$ppg = get_option('posts_per_page');
$offset = 1;

第四步

在第一頁上,您需要向posts_per_page添加offsetposts_per_page可添加7個,以便在第一頁上獲得您的七個帖子。

$query->set('posts_per_page', $offset + $ppp);

第5步

您必須將offset應用於所有后續頁面,否則您將在下一頁重復頁面的最后一個帖子

$offset = $offset + ( ($query->query_vars['paged']-1) * $ppp );
$query->set('posts_per_page',$ppp);
$query->set('offset',$offset); 

第6步

最后,您需要從found_posts減去您的偏移量,否則您在最后一頁上的分頁將是錯誤的,並且由於錯誤的帖子計數而導致最后一個帖子丟失,因此會出現404錯誤

function category_offset_pagination( $found_posts, $query ) {
    $offset = 1;

    if( !is_admin() && $query->is_category() && $query->is_main_query() ) {
        $found_posts = $found_posts - $offset;
    }
    return $found_posts;
}
add_filter( 'found_posts', 'category_offset_pagination', 10, 2 );

全部一起

這就是你的完整查詢應該如何進入functions.php

function ppp_and_offset_category_page( $query ) {
  if ($query->is_category() && $query->is_main_query() && !is_admin()) {
    $ppp = get_option('posts_per_page');
    $offset = 1;
    if (!$query->is_paged()) {
      $query->set('posts_per_page',$offset + $ppp);
    } else {
      $offset = $offset + ( ($query->query_vars['paged']-1) * $ppp );
      $query->set('posts_per_page',$ppp);
      $query->set('offset',$offset);
    }
  }
}
add_action('pre_get_posts','ppp_and_offset_category_page');

function category_offset_pagination( $found_posts, $query ) {
    $offset = 1;

    if( !is_admin() && $query->is_category() && $query->is_main_query() ) {
        $found_posts = $found_posts - $offset;
    }
    return $found_posts;
}
add_filter( 'found_posts', 'category_offset_pagination', 10, 2 );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM