这里有几个问题;
不要使用get_posts
用于分页查询。它在经过时合法地中断/忽略分页no_found_rows=true
到WP_Query
. 此外,get_posts
仅返回$posts
属性,而分页需要查询对象中的其他属性来计算分页。您可以分页get_posts
, 但这真的是一件麻烦事is just a wrapper function for
WP\\U查询“”。
不要使用全局$posts
变量(或Wordpress或PHP中的任何其他全局变量)作为自定义变量。这会在为变量指定不同内容时打断全局变量。这是最可能导致查询结果与不一致的问题WP_Query
. 始终使用自定义变量。唯一的例外是当您使用setup_postdata( $post )
具有get_posts
或类似功能,setup_postdata()
需要使用$post
全球的这里您需要记住使用wp_reset_postdata()
完成恢复后$post
全球的
使用时get_posts
, 你不需要支票WP_Error
对象为get_posts
仅返回帖子数组或空数组。它永远不会返回WP_Error
对象
您应该尝试以下方法:
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$args = array(
\'post_type\' => \'post\',
\'orderby\' => \'date\',
\'order\' => \'DESC\',
\'post_status\' => \'publish\',
\'posts_per_page\' => 5,
\'paged\' => $paged,
);
$q = new WP_Query( $args ),
if ( $q->have_posts() ) {
$displaylist = \'<div class="list-group">\';
while ( $q->have_posts() ) {
$q->the_post();
// LOOP STUFF HERE
} // endwhile
$displaylist .= \'</div>\';
wp_pagenavi( array( \'query\' => $q ) );
wp_reset_postdata(); // VERY VERY IMPORTANT
} // endif