Pet*_*ter 9 php wordpress pagination
我想在我的子页面上显示更多帖子
我在functions.php中的代码
function number_of_posts($query)
{
if($query->is_main_query())
{
$paged = $query->get( 'paged' );
if ( ! $paged || $paged < 2 )
{
}
else
{
$query->set('posts_per_page', 24);
}
}
return $query;
}
add_filter('pre_get_posts', 'number_of_posts');
Run Code Online (Sandbox Code Playgroud)
问题: 在第一页上我得到了错误的分页.它显示指向子页面4的链接,但子页面4不会退出.
我想我必须添加这样的东西
....
if ( ! $paged || $paged < 2 )
{
// show only 10 posts but calculate the pagination with 18 posts
}
.....
Run Code Online (Sandbox Code Playgroud)
这可能吗?
这是我之前在WPSE上完成的一篇文章的修改版本
步骤1
我们需要posts_per_page从后端设置选项(应该设置为10)并设置offset我们将要使用的选项.这将是第一14页上需要24个帖子,其余时间需要24个帖子.
如果您不想更改该posts_per_page选项,则只需将变量设置为$ppg即可10
$ppg = get_option( 'posts_per_page' );
//$ppg = 10;
$offset = 14;
Run Code Online (Sandbox Code Playgroud)
第2步
在第一页上,您需要减去offsettoposts_per_page
$query->set( 'posts_per_page', $ppp - $offset );
Run Code Online (Sandbox Code Playgroud)
第3步
您必须将您offset的所有后续页面应用于您,否则您将在下一页重复该页面的最后一篇文章
$offset = ( ( $query->query_vars['paged']-1 ) * $ppp ) - $offset;
$query->set( 'posts_per_page', $ppp );
$query->set( 'offset', $offset );
Run Code Online (Sandbox Code Playgroud)
第4步
最后,您需要添加偏移量,found_posts否则您的分页将不会显示最后一页
add_filter( 'found_posts', function ( $found_posts, $query )
{
$offset = 14;
if( $query->is_home() && $query->is_main_query() ) {
$found_posts = $found_posts + $offset;
}
return $found_posts;
}, 10, 2 );
Run Code Online (Sandbox Code Playgroud)
全部一起
这就是你的完整查询应该如何进入functions.php
add_action('pre_get_posts', function ( $query )
{
if ( !is_admin() && $query->is_main_query() ) {
$ppp = get_option( 'posts_per_page' );
//$ppp = 10;
$offset = 14;
if ( !$query->is_paged() ) {
$query->set( 'posts_per_page', $ppp - $offset );
} else {
$offset = ( ( $query->query_vars['paged']-1 ) * $ppp ) - $offset;
$query->set( 'posts_per_page', $ppp );
$query->set( 'offset', $offset );
}
}
});
add_filter( 'found_posts', function ( $found_posts, $query )
{
$offset = 14;
if( $query->is_main_query() ) {
$found_posts = $found_posts + $offset;
}
return $found_posts;
}, 10, 2 );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
201 次 |
| 最近记录: |