我有一个自定义循环:
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$works = new WP_Query(\'category_name=work&posts_per_page=9&paged=\' . $paged);
分页输出3页,第一页有9个帖子,这也是帖子总数,第2页和第3页没有帖子(如果没有帖子,应该没有页面,对吗?)
这是我的paginate_links()
:
<?php elseif ( $wp_query->max_num_pages > 1 && ( is_home() || is_archive() || is_search() || is_category() ) ) : // navigation links for home, archive, and search pages ?>
<?php
global $wp_query;
$big = 999999999;
echo paginate_links( array(
\'base\' => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
\'format\' => \'?paged=%#%\',
\'prev_text\' => \'\',
\'next_text\' => \'\',
\'current\' => max( 1, get_query_var(\'paged\') ),
\'total\' => $wp_query->max_num_pages
) );
?>
<?php endif; ?>
在默认循环中,一切正常。
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成
您使用您的自定义WP_Query
查询帖子,但在分页时使用全局$wp_query
变量,其中包含不同的查询。
您应该使用自定义查询变量$works
在分页中,或更改全局$wp_query
分页函数调用之前的变量。
由于您使用通用函数来输出分页,所以第二种方法会更好/更容易。这样做:
global $wp_query;
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$works = new WP_Query(\'category_name=work&posts_per_page=9&paged=\' . $paged);
$original_query = $wp_query; // store original query for later use
$wp_query = $works; // overwrite it with your custom query
... your code
... your pagination code
$wp_query = $original_query; // restore original query
SO网友:kaiser
只需使用您的自定义WP_Query/$works
对象访问中的数据paginate_links()
还有参数。
paginate_links( array(
\'base\' => str_replace( 99999999, \'%#%\', esc_url( get_pagenum_link( 99999999 ) ) ),
\'format\' => \'?paged=%#%\',
\'prev_text\' => \'\',
\'next_text\' => \'\',
\'current\' => max( 1, $works->get( \'paged\' ) ),
\'total\' => $works->max_num_pages
) );