WordPressで WP_Query を使うとどうしても「ページ送りが上手くいかない…」とハマっていた所、有り難い記事を発見したのでシェアさせていただきました。
ページ送りには「WP-PageNavi」プラグインを使い、WP_Query で新着記事の一覧を10件表示させるという処理をしていたのですが、どうやら WP-PageNavi の使い方 に問題があったみたいです。
WP_Query でページ送りが上手くいかない場合
今回わたしがハマッた問題の解決法がズバリ紹介されていました。WP-PageNavi は 1,2,3… と番号でページングしてくれるプラグインです。これにはクエリを渡せるので、…
[WP] posts_nav_link が WP_Query のループで動作しない理由と解決策とスニペット
なるほど…
という訳で、WP-PageNavi にクエリを渡せば問題は解決しそうかな。
WP_Query で記事を一覧出力
WP_Query で記事を10件出力して、ページ下部に WP-PageNavi でページ送りを付けてみる例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php $paged = get_query_var('paged') ? get_query_var('paged') : 1; $my_query = new WP_Query( array( 'paged' => $paged , 'posts_per_page' => 10 )); if ($my_query->have_posts()) : while ( $my_query->have_posts() ) : $my_query->the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endwhile; endif; //WP-PageNavi でページ送り wp_pagenavi(array('query' => $my_query)); //ループをリセット wp_reset_postdata(); ?> |
query_posts で記事を一覧出力
WP-PageNavi を使わずに、posts_nav_link でページ送りをする場合などは、query_posts を用いる模様。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php query_posts("&posts_per_page=10&paged=$paged"); if (have_posts()) : while ( have_posts() ) : the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endwhile; endif; //posts_nav_link でページ送り posts_nav_link(' | ', 'Prev', 'Next'); //ループをリセット wp_reset_query(); ?> |
WP_Query() に関して分からなかった所も、今回の問題でだいぶ掴めてきました。
少しややこしいですが、WP_Query() でハマッた方は是非参考にしてみてください↓
参考ページ
posts_nav_link が WP_Query のループで動作しない理由と解決策とスニペット
コメント