2017-07-13 207 views
0

我喜歡在第一頁的主頁上發佈帖子,僅在某個類別發佈帖子,當用戶點擊下一頁時,他會看到其他所有內容。Wordpress在第一頁顯示某個類別的帖子

我將此添加到我的functions.php:

function my_home_category ($query) { 
    if ($query->is_home() && !($query->is_paged()) && $query->is_main_query()) { 
    $query->set('cat', '2'); 
    } 
} 
add_action ('pre_get_posts', 'my_home_category'); 

和它的作品。唯一的問題是,當我去page 2時,我看到的帖子通常會在第2頁(如果我沒有這個功能),而不是所有類別的最新帖子。因此,如果以前在第一頁上有其他類別的帖子,我現在無法在任何地方看到它們。

所以該功能之前,我的博客是這樣的:

Page1: A, B, C, B, A <br> 
Page2: B, A, A, C, B <br> 

(A指從A類的帖子...)

,我想有這樣的:

Page1: B, B, B, B, B <br> 
Page2: A, C, A, A, A <br> 
Page3: C ... <br> 

但是發生了什麼是:

Page1: B, B, B, B, B <br> 
Page2: B, A, A, C, B <br> 

你能幫助我嗎?

回答

0

修改你的函數的東西:

function my_home_category ($query) { 
    if ($query->is_home() && !($query->is_paged()) && $query->is_main_query()) { 
    $query->set('cat', '2'); 
    } 
    else{ 
     //Manually determine page query offset (offset + current page (minus one) x posts per page) 
     $page_offset = $offset + (($query->query_vars['paged']-1) * $ppp); 
     //Apply adjust page offset 
     $query->set('offset', $page_offset); 
    } 
} 
add_action ('pre_get_posts', 'my_home_category'); 
+0

謝謝,經過小編輯這個作品。 Hovewer不像我想要的那樣。現在發生的是:Page1:B,B,B,B,B第2頁:A,B,C,B,A(B類別的帖子再次出現)。 – JiriNovak

+0

此外,博客的最後一頁會消失。博客上的頁面數量仍然相同,但由於它是從第2頁開始的,因此最後一個頁面現在缺失。 – JiriNovak

+0

在'else'內加入條件: /*在$ do_not_duplicate */ 設置第一頁ID $'query-> set('post__not_in',$ do_not_duplicate);' – amit

0

我想修改我index.php來解決重複問題上面:

<?php if (have_posts()) : ?> 

     <?php while (have_posts()) : the_post(); 
     $post_id = get_the_ID(); 
     if (in_array($post_id, $do_not_duplicate)) { 
      continue; // We've already seen this post ID, so skip the rest of the loop 
     } 

     $do_not_duplicate[] = $post_id; 
     ?> 
.... the content of post ... 

但這沒有幫助。

相關問題