PORTFOLIO & WEB DESIGN MEMORANDOM BLOG   
PORTFOLIO & WEB DESIGN MEMORANDOM BLOG   

【WORDPRESS】ページネーションを正しく機能させる方法

タグ :

WP_Queryクラスやpre_get_postsアクションフックを使用し、ページネーションを使う

WordPressで<?php query_posts(“posts_per_page=10”); ?>を使うとページネーションが正しく機能しないことがあります。これは、query_postsが新しいクエリを実行し、元のクエリを上書きしてしまうためです。その結果、ページネーションが期待通りに動作しなくなります。

この問題を解決するには、WP_Queryクラスやpre_get_postsアクションフックを使用することが推奨されます。

1.WP_Queryを使用する

  1. <?php
  2. $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
  3. $query = new WP_Query(array(
  4. 'posts_per_page' => 10,
  5. 'paged' => $paged
  6. ));
  7. ?>
  8. <?php if ($query->have_posts()) : ?>
  9. <?php while ($query->have_posts()) : $query->the_post(); ?>
  10. <!-- 投稿の表示コード -->
  11. <?php endwhile; ?>
  12. <!-- ページネーション -->
  13. <?php
  14. the_posts_pagination(array(
  15. 'mid_size' => 2,
  16. 'prev_text' => __('Previous', 'textdomain'),
  17. 'next_text' => __('Next', 'textdomain'),
  18. ));
  19. ?>
  20. <?php endif; ?>
  21. <?php wp_reset_postdata(); ?>

2.functions.phpファイルにpre_get_postsアクションフックを使用するコードを追加

  1. function custom_posts_per_page($query) {
  2. if (!is_admin() && $query->is_main_query()) {
  3. if (is_home() || is_archive()) {
  4. $query->set('posts_per_page', 10);
  5. }
  6. }
  7. }
  8. add_action('pre_get_posts', 'custom_posts_per_page');

MILMONA   MILMONA   MILMONA   MILMONA   MILMONA   
MILMONA   MILMONA   MILMONA   MILMONA   MILMONA