分页在WP_Query()中不起作用

时间:2014-08-31 00:15:36

标签: php pagination wordpress wp-query

我的分页不适用于WP_Query()

我总共有三个帖子。第1页正确显示所有三个帖子。但第2页显示相同的三个帖子。事实上,不应该有第2页,因为第1页已经显示了所有三个帖子。

可能出现什么问题?


循环index.php

<?php
$query = new WP_Query('cat=1');
if ($query->have_posts()) :
    while ($query->have_posts()) : $query->the_post();
        the_title();
    endwhile;
endif;
?>

<?php my_pagination(); ?>



functions.php

中的分页
if ( ! function_exists( 'my_pagination' ) ) :
    function my_pagination() {
        global $wp_query;
        $big = 999999999; // need an unlikely integer   
        echo paginate_links( array(
             'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), 
             'format' => '?paged=%#%',
             'current' => max( 1, get_query_var('paged') ), 
             'prev_next'    => True,
             'total' => $wp_query->max_num_pages
        ) );
}

2 个答案:

答案 0 :(得分:0)

主循环中的查询变量为$query,而您的分页中的查询变量为$wp_query。尝试使用$query代替$wp_query

例如:

if ( ! function_exists( 'my_pagination' ) ) :
    function my_pagination() {
        $big = 999999999; // need an unlikely integer   
        echo paginate_links( array(
             'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), 
             'format' => '?paged=%#%',
             'current' => max( 1, get_query_var('paged') ), 
             'prev_next'    => True,
             'total' => $query->max_num_pages
        ) );
}

注意:您的代码似乎缺少endif;

答案 1 :(得分:0)

尝试使用此代码进行查询:

global $wp_query;
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
$wp_query = new WP_Query('cat=1&paged=' . $paged);
if ($wp_query->have_posts()) :
    while ($wp_query->have_posts()) : $wp_query->the_post();
        the_title();
    endwhile;
endif;
my_pagination();

如果它仍然不起作用(根据上下文可能会发生),请尝试替换:

$paged = get_query_var('paged') ? get_query_var('paged') : 1;

$paged = get_query_var('page') ? get_query_var('page') : 1;