所以我写了以下内容来创建一个瞬态:
$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!-我们工作。
但基于瞬态的分页不起作用。
为什么?
最合适的回答,由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 );
}