カテゴリーやタグごとの一覧は簡単に作れるけど、全記事一覧を表示するページってどうすれば良いの?
そんな疑問点が出てきたので少し調べてみたところ、固定ページを使ってできるようなので紹介したいと思います。
目次
全記事一覧するためのコード
先ずは適当にphpファイルをテーマフォルダ内に作り、下記のコードをコピペします。
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 28 29 30 31 32 33 34 35 36 37 38 | <?php /** * Template Name: 全カテゴリーを表示する */ ?> <?php $paged = (int) get_query_var('paged'); $args = array( 'posts_per_page' => 6, 'paged' => $paged, 'orderby' => 'post_date', 'order' => 'DESC', 'post_type' => 'post', 'post_status' => 'publish' ); $the_query = new WP_Query($args); if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?> <div class="post"> <h1 class="title"><?php the_title(); ?></h1> <!-- タイトル表示 --> <h2><?php the_category(); ?></h2> <!--カテゴリ名表示--> <?php the_content(); ?> </div> <?php endwhile; endif; ?> <!--ページャーの表示--> <?php if ($the_query->max_num_pages > 1) { echo paginate_links(array( 'base' => get_pagenum_link(1) . '%_%', 'format' => 'page/%#%/', 'current' => max(1, $paged), 'total' => $the_query->max_num_pages )); } ?> <?php wp_reset_postdata(); ?> |
カスタムテンプレート作成
あとは固定ページを作って、上記コードをコピペすればOKじゃん。と思っていると、WordPressの投稿画面ではPHPが使えないため、ページ一覧として機能してくれないんですね。
そこで、記事にコードを直接貼り付けるのではなく、テンプレート名を宣言したphpファイルをカスタムテンプレートとして読み込むことで、PHPを利用することができるようになります。
テンプレート名を宣言する
カスタムテンプレートを作るのは簡単で、ファイル内の一番最初に下記のコードを追加するだけです。
1 2 3 4 | <?php /** * Template Name: 全カテゴリーを表示する */ ?> |
Template Name: の後は任意のテンプレート名をつけます。こんだけ?って思うぐらいカンタンですね。
固定ページでカスタムテンプレートを読み込む
次はWordPressの管理画面から、新規固定ページを追加して投稿画面に移動します。
投稿画面の「固定ページの属性」というエリアに「テンプレート」というプルダウンメニューがあるので、「全カテゴリーを表示する」を選択してページを公開すれば完了です。
いくつか補足説明
ループクエリのリセット
WordPressお決まりの、ループのクエリをリセットします。
1 | <?php wp_reset_postdata(); ?> |
こいつを記述してやらないと、ループがリセットされずに他のクエリに影響が出るので、記述するのをお忘れなく。
カスタムタクソノミーの場合
そもそも全記事一覧を作るきっかけになったのは、カスタムタクソノミーの一覧を作る必要があったからなのですが、上記のコードを使うとカスタム投稿タイプの全タクソノミーの一覧も作ることができました。
1 | 'post_type' => 'post' |
上記部分の ‘post’ を
1 | 'post_type' => 'タクソノミー名' |
任意のタクソノミー名に変更するだけです。
一覧の記事表示数の変更
一覧に表示する記事の数を変更したい場合は
1 | 'posts_per_page' => 6 |
‘posts_per_page’ の値を任意の値に変更します。
1 | 'posts_per_page' => 10 |
上記の場合は、ページ内に記事が10件表示されます。
まとめ
自分が知らないだけかもしれませんが、全カテゴリーを含む記事一覧ってデフォルトのテンプレート機能には無いんでしょうかね。
とりあえず今回紹介した方法は、カスタム投稿タイプの一覧を作る場合にも使えるので意外と利用する機会はあると思います。自分は非常に助かりました。
もし全カテゴリーを含む記事一覧を作りたいという方は試してみてください。
『WordPressで全カテゴリーを含む記事一覧を作りたい!』でした。