带有页面内分页的WordPress博客文章/帖子

时间:2015-10-07 作者:KC Chai

参考标题,我正在尝试为带有分页的博客文章创建一个短代码。我可以显示日志,但分页不起作用。我尝试使用下面的代码,第二页的链接是www.mysite。com/postname/page/2。但它可以追溯到www.mysite。com/postname/当我单击第二页的分页链接时。

<?php
$big = 999999999; 

    $pagination = paginate_links( array(
        \'base\' => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
        \'format\' => \'?paged=%#%\',
        \'current\' => max( 1, get_query_var(\'paged\') ),
        \'total\' => $this->query->max_num_pages
    ) );

    $html .= $pagination;
?>

enter image description here

enter image description here

3 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

您需要查看所有评论和问题内容的内容,这在某种程度上仍然是一个谜。

以下是两种应该有效的方法

对于页面,我编写了一个完整的函数,它将对任何(或几乎任何)查询分页,但在单个贴子页面上除外。它也适用于静态头版。我不打算详述get_paginated_numbers() 分页功能。中讨论了您需要了解的所有信息my answer here, 所以请随时查看。别忘了修改它以满足您的确切需要。

下面是一个基本的短代码来展示其用法

add_shortcode( \'paginate_shortcode\', function ()
{
    if ( get_query_var(\'paged\') ) { 
        $current_page = get_query_var(\'paged\'); 
    }elseif ( get_query_var(\'page\') ) { 
        $current_page = get_query_var(\'page\'); 
    }else{ 
        $current_page = 1; 
    }

    $q = new WP_Query( [\'posts_per_page\' => 1, \'paged\' => $current_page] );
    return $q->posts[0]->post_title . \'</br>\' . get_paginated_numbers( [\'query\' => $q] );
});
您可以使用[paginate_shortcode] 在任何页面上,它都会显示如下内容

enter image description here

请注意,文章标题会随着链接的更改而更改

对于单篇文章来说,带有分页子查询的单篇文章并不是真正需要的。如果你想在一个单独的帖子页面上使用你的短代码(我不鼓励这样做),比如相关的帖子,你可以使用我发布的方法this answer. 它非常广泛,所以我不打算在这里转载它。请随意查看并根据需要进行修改

SO网友:Milo

paged 是存档分页的查询变量,并且/page/n/ 是存档分页URL的格式。单桩使用page 格式为/postname/n/, 哪里n 是页码。您的链接正在重定向,因为它们的格式无效。

SO网友:Dejo Dekic

好的,伙计,将此代码添加到您的函数中。php

//This function is responsible for splitting posts and pages using <!--nexpage-->
function my_link_pages() {
$paged_page_nav = wp_link_pages(
            array(
            \'before\' => \'<div class="page-navigation"><ul><li class="pages">\' . esc_html__( \'Pages:\', \'domain\' ) . \'</li>\',
            \'after\' => \'</ul></div>\',
            \'link_before\' => \'<span>\',
            \'link_after\' => \'</span>\',
            \'echo\' => false
            )
         );

//Add "current" and "page_divide" classes to our links
//READ: http://wordpress.stackexchange.com/questions/17421/wp-link-page-wrap-current-page-element
// Now let\'s wrap the nav inside <li>-elements
$current_class = \'current\';
$classes = \'page_divide\';
$paged_page_nav = str_replace( \'<a\', \'<li class="\'. $classes .\'"><a\' ,$paged_page_nav );
$paged_page_nav = str_replace( \'</span></a>\', \'</a></li>\', $paged_page_nav );
$paged_page_nav = str_replace( \'"><span>\', \'">\', $paged_page_nav );
//Add "current" class
$paged_page_nav = str_replace( \'<span>\', \'<li class="\'. $current_class .\'">\', $paged_page_nav );
$paged_page_nav = str_replace( \'</span>\', \'</li>\', $paged_page_nav );
echo  $paged_page_nav ;
}
然后在你的单曲里打电话。php类似:

<?php my_link_pages(); ?>
确保添加<!--nexpage--> 在您的后期编辑屏幕上(选择文本非视觉)

相关推荐

在Get_the_Posts_Pagination函数中编辑分页文本

我想在链接模板中编辑screen\\u reader\\u文本。php我可以在一个主题中这样做,这样它就不会在更新时被覆盖。看起来过滤器是最好的选择,但我找不到关于使用什么过滤器的文档。这是我想从链接模板更改的代码。php: if ( $GLOBALS[\'wp_query\']->max_num_pages > 1 ) { $args = wp_parse_args( $args, array( \'mid_size\' =&