我正在尝试更改类别页面上显示的帖子数, 以在连续的页面(页面2、3等)上更改。因此, 第一页显示7个帖子, 但该类别的第2、3和4页等每页仅显示6个帖子(即, 当你单击”
下一页”
列出较旧的帖子时)。
我知道更改不同类别/存档页面的帖子数量相对简单-但这是不同的, 因为我希望分页页面具有不同的帖子数量。
【更改连续类别页面上的帖子数(WordPress)】有任何想法吗?
#1这是我最近在WPSE上所做的回答。我进行了一些更改以满足你的需求。你可以在此处查看该帖子
步骤1
如果你已将主查询更改为自定义查询, 请将其更改回默认循环
<
?phpif ( have_posts() ) :
// Start the Loop.
while ( have_posts() ) : the_post();
///<
---YOUR LOOP--->
endwhile;
//<
---YOUR PAGINATION--->
else : //NO POSTS FOUND OR SOMETHINGendif;
?>
第2步
使用pre_get_posts更改主查询以更改类别页面上的posts_per_page参数
步骤3
现在, 从后端设置posts_per_page选项(我假设为6), 并设置你将要使用的偏移量。那将是1, 因为你将需要在第一页上发布7条帖子, 在其余页面上需要6条帖子
$ppg = get_option('posts_per_page');
$offset = 1;
第四步
在第一页上, 你需要将偏移量添加到posts_per_page, 该偏移量总计为7, 以便在第一页上获得七个帖子。
$query->
set('posts_per_page', $offset + $ppp);
步骤5
你必须将偏移量应用于所有后续页面, 否则将在下一页上重复该页面的最后一个帖子
$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 );
推荐阅读
- 更改WordPress菜单的类别
- 更改WordPress管理区域中的菜单项标签()
- 通过子主题更改自定义帖子类型的标签
- 论异步编程的正确姿势(十个接口的活现在只需要一个接口就能搞定!)
- #yyds干货盘点# springboot使用@Async实现异步调用
- 图解MongoDB集群部署原理
- MongoDB学习笔记MongoDB索引那点事
- 大数据SQL优化之数据倾斜解决案例全集
- 如何保证缓存与数据库双写时的数据一致性()