我希望只在某个类别的首页帖子主页上,当用户点击下一页时,他会看到其他所有内容。
我把它添加到我的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 :(得分: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');