WordPress のページで投稿記事を読み込む方法を紹介します。通常はトップページなどでしか読み込めませんが、この方法で固定ページで読み込むことが可能です。
用意するもの
- WordPress のページ。ページスラッグは blog とします。
- テーマファイル page-blog.php
テーマファイル page-blog.php で作成しますと、blog というスラッグのページを読み込むときに、このテーマファイルを使用します。
記事を読み込むコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <?php $paged = get_query_var('paged'); query_posts('showposts=10&posts_per_page=10&paged=' . $paged); ?> <?php if(have_posts()):while(have_posts()):the_post(); ?> <?php the_content(); ?> <?php endwhile;endif; ?> <div class="tablenav"><?php global $wp_rewrite; $paginate_base = get_pagenum_link(1); if (strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()) { $paginate_format = ''; $paginate_base = add_query_arg('paged', '%#%'); } else { $paginate_format = (substr($paginate_base, -1 ,1) == '/' ? '' : '/') . user_trailingslashit('page/%#%/', 'paged');; $paginate_base .= '%_%'; } echo paginate_links( array( 'base' => $paginate_base, 'format' => $paginate_format, 'total' => $wp_query->max_num_pages, 'mid_size' => 5, 'current' => ($paged ? $paged : 1), )); ?></div> <?php query_posts($query_string); ?> |
解説
以下に注目するべきところを解説していきます。
2行目: $paged = get_query_var(‘paged’);
現在何番目のページにいるかを取得します。のちに現在位置を元にデータベースから投稿を取得するかを決める際に使用します。
3行目: query_posts(‘showposts=10&posts_per_page=10&paged=’ . $paged);
showposts=10 で10記事表示、posts_per_page=10 でどれくらいの記事毎にページングするのか、paged=’ . $paged で現在のページ番号をいれていますので、ページングしたらちゃんとページングすることができます。これのどれかひとつが欠けてもいけませんので要注意です。
9行目〜25行目: div class=”tablenav”…
これはナビゲーションで下記のページのを参考にさせて頂いております。
27行目: query_posts($query_string);
元のクエリに戻します。これをやっておかないと、サイドバーで is_home() などを使ってると起動してしまいますので気をつけましょう。変えたら戻す癖を付けることでトラブルを招かなくて済みます。
コメント