我有一个问题,PageNavi显示126页(126个帖子 – 这部分几乎是正确的),但不是分解10(期望13页)它显示每个页面中的所有帖子.如果我更改’numberposts’=> 5它显示了相同的5.
相关代码部分:
$args = array( 'category' => 7, 'numberposts' => -1);
$allpost = get_posts( $args );
foreach($allpost as $post) : setup_postdata($post); ?>
我似乎无法弄清楚出了什么问题.
更新(完整代码):
get_header();
?>
something
$args = array( 'category' => 7, 'numberposts' => -1);
$allpost = get_posts( $args );
foreach($allpost as $post) : setup_postdata($post); ?>
工作代码:
something
global $paged;
if (get_query_var( 'paged' ))
$my_page = get_query_var( 'paged' );
else {
if( get_query_var( 'page' ) )
$my_page = get_query_var( 'page' );
else
$my_page = 1;
set_query_var( 'paged', $my_page );
$paged = $my_page;
}
$args = array(
'cat=7',
'paged' => $my_page,
'posts_per_page' => 10
);
$my_query = new WP_Query( $args );
while ($my_query->have_posts()) : $my_query->the_post();?>
wp_pagenavi( array( 'query' => $my_query ) );
wp_reset_query();
?>
解决方法:
当您使用get_posts时,您正在进行自己的查询,而不是使用WordPress生成的默认查询变量. PageNavi插件无法在自定义循环中开箱即用.
作为pointed by rbaier4,您必须使用分页变量.注意不要将默认循环与自定义内容混合,并在完成后重置变量.
global $paged;
if (get_query_var( 'paged' ))
$my_page = get_query_var( 'paged' );
else {
if( get_query_var( 'page' ) )
$my_page = get_query_var( 'page' );
else
$my_page = 1;
set_query_var( 'paged', $my_page );
$paged = $my_page;
}
// default loop here, if applicable, followed by wp_reset_query();
$args = array(
// other query params here,
'paged' => $my_page
);
$my_query = new WP_Query( $args );
// custom loop code
wp_pagenavi( array( 'query' => $my_query ) );
wp_reset_query();
希望能帮助到你.
标签:wordpress,php,loops,wordpress-plugin,wordpress-theming
来源: https://codeday.me/bug/20190630/1336332.html