Wordpress在第一页上显示某些类别的帖子

时间:2017-07-13 06:27:59

标签: php wordpress loops

我希望只在某个类别的首页帖子主页上,当用户点击下一页时,他会看到其他所有内容。

我把它添加到我的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>

你能帮我吗?

1 个答案:

答案 0 :(得分: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');