如何获得像这样的帖子分页

时间:2021-03-25 作者:zachary

我现在正在使用这个函数

wp_link_pages( array(\'before\' => \'<div class="page-links">\',\'after\'  => \'</div>\',) );
分页后显示如下:

1 2 3 4 5 6 7 8 9 10 11

但我希望它是这样的,因为有太多的页面

1 2 3。。9 10 11

然而,没有mid_sizeend_size like函数paginate_links()

我整天都在寻找答案,有人能帮我吗?

2 个回复
SO网友:Jacob Peattie

这是不可能的wp_link_pages(), 但你可以使用paginate_links(). 您只需要配置参数,以便链接基于您的帖子/页面的分页。要做到这一点,您只需知道:

基本URL。这是页面/帖子的永久链接/6, 而不是/page/6/?page=5 或诸如此类的事情$numpages 变量

  • 当前页面。这是全球$page 变量
  • 您可以这样使用:

    echo paginate_links(
        [
            \'base\'    => user_trailingslashit( trailingslashit( get_the_permalink() ) . \'%_%\' ),
            \'format\'  => \'%#%\',
            \'total\'   => $numpages,
            \'current\' => $page,
        ]
    );
    
    请注意,我们想要base 像这样,在哪里%_% 是我们的页码所在位置:

    http://website.test/2021/03/25/my-post/%_%/
    
    为了正确地做到这一点,我们使用trailingslashit() 在…上get_the_permalink() 以确保URL和占位符之间有斜杠。然后我们使用user_trailingslashit() 如果站点是以这种方式配置的,则在最末端添加尾部斜杠。

    SO网友:Trisha

    Jacob说得对,您需要合并paginate\\u links()的函数,但我建议您看看本页上的示例:

    https://developer.wordpress.org/reference/functions/get_the_posts_pagination/

    我的主题(神奇的MHMagazine主题)内置了此功能,他们就是这样做的(它完全按照OP的要求执行,几个数字、一个省略号、几个数字,以及根据需要的右箭头或左箭头):

    if (!function_exists(\'mh_magazine_pagination\')) {
    function mh_magazine_pagination() {
        if (get_the_posts_pagination()) {
            echo \'<div class="mh-loop-pagination clearfix">\';
                the_posts_pagination(array(
                    \'mid_size\' => 1,
                    \'prev_text\' => esc_html__(\'&laquo;\', \'mh-magazine\'),
                    \'next_text\' => esc_html__(\'&raquo;\', \'mh-magazine\'),
                ));
            echo \'</div>\';
        }
    }
    }
    
    您可以在此页面上看到此操作的示例(滚动至底部):

    https://www.bestallinclusive.com/category/insider-tips/

    (Mods,如果不允许的话,可以删除最后一个链接,但我认为这正是OP想要的,所以我认为他希望在尝试实现之前看到它)。

    相关推荐

    pagination leads to 404 page

    我想弄明白为什么我的分页没有显示出来,我快发疯了。我将设置场景:我有一个页面“category.php”。在这个页面中,我为所有分类帖子设置了一个自定义查询。它们是自定义帖子类型,并显示该类别的自定义帖子。我的问题如下:我已经尝试过这个函数:the_post_pagination();$category = get_category(get_query_var(\'cat\')); if ( get_query_var(\'paged\') ) { $paged = get_query_var(