如何使用瞬变来缓存带有分页的wp_Query?

时间:2014-05-20 作者:Gixty

我见过一些例子,其中有固定数量的帖子需要查询;但是,我找不到使用分页的示例。

我试图找出如何使用瞬态缓存带有分页的WP\\U查询。

到目前为止,我每页显示12篇帖子。当我加载下一组帖子时,帖子与前12篇帖子相同。它没有得到以下帖子。

1 个回复
最合适的回答,由SO网友:Robert hue 整理而成

您需要为每页帖子设置一个唯一的临时键,否则每页都会输出相同的帖子。

这里有一个例子。专注于get_transient &;set_transient 功能。

<?php

  $my_posts_query = get_transient( \'my_unique_transient_key_\' . get_query_var( \'paged\' ) );

  if( false === $my_posts_query ) {

    $args = array( \'post_type\' => \'post\', \'posts_per_page\' => \'12\', \'paged\' => $paged );
    $my_posts_query = new WP_Query( $args );

    set_transient( \'my_unique_transient_key_\' . get_query_var( \'paged\' ), $my_posts_query, 300 );
  }

  if ( $my_posts_query->have_posts() ) :

    while ( $my_posts_query->have_posts() ) :

      $my_posts_query->the_post();

      // Your loop

    endwhile;

    // This is responsible for 1, 2, 3 pagination links. You can easily change this to previous and nexys links.
    if ( $my_posts_query->max_num_pages > 1 ) :
      $big = 999999999;
      echo \'<div class="pagination">\';
      echo paginate_links( array(
        \'base\' => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
        \'format\' => \'?paged=%#%\',
        \'current\' => max( 1, get_query_var(\'paged\') ),
        \'total\' => $my_posts_query->max_num_pages
      ) );
      echo \'</div>\';
    endif;

  endif;

  wp_reset_postdata();

?>

结束

相关推荐

Pagination Custom post type

我有一个名为“doel”的自定义帖子类型。我制作了一个页面模板来显示所有doel项目在这个页面模板中,我循环使用“doel”post类型,在其中6个之后,我想进行分页。仅显示分页。我开始上网,这似乎是wp 3.4版之后的常见问题我在这个网站和wp论坛上尝试了一些解决方案,但没有一个有效。例如,我尝试的是调整循环,因此分页将在循环中、循环外或endwhile和endif之间。此外,我还尝试了wp pagenavi插件和最初的wp previous和next post链接,但它们都不起作用,所以我认为我的循环