当前位置:  开发笔记 > 编程语言 > 正文

Wordpress,在子页面上显示更多帖子

如何解决《Wordpress,在子页面上显示更多帖子》经验,为你挑选了1个好方法。

我想在我的子页面上显示更多帖子

我在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');

问题: 在第一页上我得到了错误的分页.它显示指向子页面4的链接,但子页面4不会退出.

我想我必须添加这样的东西

....
if ( ! $paged || $paged < 2 ) 
{

// show only 10 posts but calculate the pagination with 18 posts

} 
.....

这可能吗?



1> Pieter Goose..:

这是我之前在WPSE上完成的一篇文章的修改版本

来自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;

第2步

在第一页上,您需要减去offsettoposts_per_page

$query->set( 'posts_per_page', $ppp - $offset );

第3步

您必须将您offset的所有后续页面应用于您,否则您将在下一页重复该页面的最后一篇文章

$offset = ( ( $query->query_vars['paged']-1 ) * $ppp ) - $offset;
$query->set( 'posts_per_page', $ppp );
$query->set( 'offset', $offset ); 

第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 );

全部一起

这就是你的完整查询应该如何进入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 );

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有