我正在使用自定义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_Query
或
paginate_links
作用
这段代码中应该有一些错误。
最合适的回答,由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.