分页页面显示的内容正确,但分页链接不正确

时间:2014-11-18 作者:Robert hue

我正在使用自定义WP_Query 在静态首页上显示帖子。和生成numbered pagination links 具有paginate_links 功能。这是我的密码。。。

$latest_args = array(
    \'post_type\' => \'post\',
    \'category__not_in\' => array( 3 ),
    \'ignore_sticky_posts\' => 1,
    \'paged\' => $paged,
);

$latest_query = new WP_Query( $latest_args );

if ( $latest_query->have_posts() ) :

    while ( $latest_query->have_posts() ) : $latest_query->the_post();
        get_template_part( \'content\', get_post_format() );
    endwhile;

    if ( $latest_query->max_num_pages > 1 ) :
        $big = 999999999;
        echo \'<div class="pagination">\';
        echo paginate_links( array(
            \'base\' => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
            \'format\' => \'?paged=%#%\',
            \'current\' => max( 1, get_query_var(\'paged\') ),
            \'total\' => $latest_query->max_num_pages
        ) );
        echo \'</div>\';
    endif;

endif;

wp_reset_postdata();
但是当我在我的static front page 然后它总是在所有其他页面上显示第一页内容。但通过在查询中添加分页参数进行了更正as suggested in codex.

if ( get_query_var(\'paged\') ) {
  $paged = get_query_var(\'paged\');
} elseif ( get_query_var(\'page\') ) {
  $paged = get_query_var(\'page\');
} else {
  $paged = 1;
}
它修复了分页页面上的重复内容,但基于数字的分页链接始终固定在第一页。它总是将第一个链接(1)显示为当前链接,这使得浏览其余页面变得困难。

虽然如果我在任何其他页面上使用此代码,除了static front page.

此问题的任何解决方案。

EDIT: Update

我已尝试禁用所有插件,并从中删除了所有自定义开发的功能functions.php 但问题仍然存在。所以我猜这与我如何使用WP_Querypaginate_links 作用

这段代码中应该有一些错误。

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

静态页面不适用于paged 查询变量,他们需要page 变量

这就是第二个代码块使查询工作的原因:它使用page var(如果可用)。

但是,分页链接代码始终使用paged:

...
\'format\' => \'?paged=%#%\',
...
所以您正在发送paged 查询变量,但查找page 变量。

解决方案是format 参数发送page 如果从静态页面使用,则查询var。

if ( $latest_query->max_num_pages > 1 ) :

    $var = is_page() ? \'page\' : \'paged\'; // <-- choose var here   

    $big = 999999999;
    echo \'<div class="pagination">\';
    echo paginate_links( array(
        \'base\' => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),

        \'format\' => \'?\' . $var . \'=%#%\', // <-- use var here  

        \'current\' => max( 1, get_query_var($var) ), // <-- use var here 
        \'total\' => $latest_query->max_num_pages
    ) );
    echo \'</div>\';
endif;
Untested.

结束

相关推荐

Pagination and Related Posts

是否可以对嵌入在single中的以下相关POST代码使用分页。我的主题的php。 <?php // for use in the loop, list 5 post titles related to first tag on current post $tags = wp_get_post_tags($post->ID); if ($tags) { $first_tag = $