暂时分页不能正常工作

时间:2013-09-22 作者:TheWebs

所以我写了以下内容来创建一个瞬态:

$wp_object_i_created = new WP_Query(\'cat=1\');
set_transient(\'category_one_posts\', $wp_object_i_created, 60*60*1);
好吧,然后我决定“你知道,让我们走一遍,把帖子吐出来。”

因此,我做了以下工作:

if(false !== get_transient(\'category_one_posts\')){
    $posts_inside = get_transient(\'category_one_posts\');
    if($posts_inside->have_posts()){
        while($posts_inside->have_posts()){
            $posts_inside->the_post();
            // Display your posts in some maner.
        }
        echo get_next_posts_link(\'« Older Entries\', $max_pages);
        echo get_previous_posts_link(\'Newer Entries »\', $max_pages);
    }
 }
现在分页工作-here\'s the catch - 它以一种非常失败的方式工作。所以我把它设置为每页显示5篇文章。

因此,如果我转到我的链接:http://localhost/wordpress/?page_id=1667 我看到了我的5篇帖子,在底部有两个链接——一个是旧的,一个是新的。呜呜。但如果我单击“旧条目”按钮返回,那么我的链接现在看起来像:http://localhost/wordpress/?page_id=1667&paged=2 我看到那是在第二页上,我可以向前翻一页,以此类推,但帖子都是一样的,从来没有更新过。

现在,根据特定的参数进行常规查询以获得特定的帖子,甚至只是常规的WordPress循环-它们的分页都按预期进行,您进入第二页,您会得到一组与第一页不同的帖子-woot!-我们工作。

但基于瞬态的分页不起作用。

为什么?

1 个回复
最合适的回答,由SO网友:Dan Ștefancu 整理而成

Short answer: 无论您是哪一页,都在进行相同的查询,但您期望的结果不同。

Long answer: 第二页的查询应该不同,具有paged=2, 因此,带有分页的查询(和瞬态)应如下所示:

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

if ( get_transient( \'category_one_posts-\' . $paged_var ) == false ) {
    $posts_inside = new WP_Query(
        array(
             \'cat\' => 1,
             \'paged\' => $paged_var
        )
    );
    set_transient( \'category_one_posts-\' . $paged_var, $posts_inside, 60*60*1 );
} else {
    $posts_inside = get_transient( \'category_one_posts-\' . $paged_var );
}

if ( $posts_inside->have_posts() ) {
    while( $posts_inside->have_posts() ) {
        $posts_inside->the_post();
        // Display posts.
    }

    echo get_next_posts_link( __( \'Next\', \'textdomain\'), $posts_inside->max_num_pages );
    echo get_previous_posts_link( __( \'Previous\', \'textdomain\'), $posts_inside->max_num_pages );
}

结束