MENU

【WordPress】固定ページで全投稿記事の一覧ページを作成する方法

WordPressのアーカイブページの作り方を読んで、

全投稿記事の一覧を作成するのにはどうすればいいんだろう?」

と思った人はいませんか?

確かにアーカイブを表示するためのテンプレートであるarchive.phpでは

  • カテゴリーアーカイブ
  • タグアーカイブ
  • 日付アーカイブ
  • 作成者別アーカイブ
  • カスタム分類アーカイブ

など一覧を表示できますが、Wordpressはデフォルトで全投稿記事の一覧を表示することができない仕組みになっています。

いくつか全投稿記事一覧を表示する方法があるのですが、

  • 固定ページでサブループを使用して全投稿記事一覧を表示する方法(本記事)
  • functions.phpで全投稿記事一覧ページの設定をする方法

などがあります。

今回は固定ページを使用して全投稿記事の一覧を表示する方法を紹介したいと思います。

固定ページを使用して全記事一覧を作成する大まかな流れ

STEP
管理画面から全投稿記事一覧用の固定ページを作成
STEP
page-[slug].phpを作成
STEP
archive.phpと同じ手順でテンプレートファイルのコードを書き換える
STEP
投稿記事一覧ページの表示確認をする
目次

管理画面から投稿記事一覧用の固定ページを作成する

WordPress管理画面>固定ページ新規追加より固定ページを作成します。

タイトルは記事一覧、スラッグはallpostにして公開します。

スラッグとテンプレートファイル名の関係

固定ページで決めたスラッグはテンプレートファイルを作成するときに使用します。

テンプレートファイル名は

page-[スラッグ].php

にする決まりがあります。

スラッグがallpostの場合、page-allpost.phpになるということですね。

スラッグとURLの関係

固定ページで決めたスラッグは、URLの一部になります。

今回の場合、

http://localhost:10124/allpost/

になります。

page-[slug].phpで投稿記事一覧用のテンプレートファイルを作成する

先に説明した通り、WordPress管理画面の固定ページを作成するときに決めたスラッグを使用して

page-allpost.php

というテンプレートファイルを作成します。

archive.phpと同じ手順でテンプレートファイルのコードを書き換える

中身はarchive.phpを同じものを使用します。

archive.phpを作成済みであれば、コピペでOKです!

サブループを使用して投稿記事を取得・表示する

archive.phpのコードをそのまま使用すると、

投稿記事一覧ではなく、固定ページ一覧が表示されてしまいます。

理由はarchive.phpでメインループを使用しているからです。

投稿記事一覧を表示するには、サブループを使用します。

サブループは簡単に説明すると、表示したい記事の絞り込み設定をすることができます。

例えば

  • どのタイプの投稿を表示するか
  • 1ページに何記事表示するのか
  • 記事の表示順
  • どのカテゴリーの記事を表示するのか

など、できることはとても多いです。

サブループのフォーマットの簡単な説明

//解説①
<?php
  $args = array(
  'post_type' => 'post',
  'posts_per_page' => 6
  );
  $query = new WP_Query( $args );
?>

//解説②
<?php if( $query->have_posts() ) : ?>
  <?php while ( $query->have_posts() ) : $query->the_post(); ?>
    ~取り出したpostの処理を記述~
  <?php endwhile; wp_reset_postdata(); ?>

//解説③
<?php else : ?>
  <p class="">記事が見つかりませんでした。</p>
<?php endif; ?>

意味合いとしては、

  1. 取り出したい記事を絞り込む
  2. もし該当する記事があれば表示
  3. 該当する記事がなければ「見つかりませんでした」と表示

実際に投稿記事一覧用に書き換える

今回の表示条件は

  • 表示するのは投稿記事
  • 1ページに6記事表示

にします。

post_typeで”投稿”(=post)記事を指定します。

posts_per_pageで1ページに表示する記事数(=6)を指定します。

//表示したい記事を絞り込む
<?php
  $args = array(
  'post_type' => 'post',
  'posts_per_page' => 6
  );
  $query = new WP_Query( $args );
?>
<?php if( $query->have_posts() ) : ?>
  <?php while ( $query->have_posts() ) : $query->the_post(); ?>
   //aタグ内はarchive.phpと同じ
    <a href="<?php the_permalink(); ?>">
      <div>
        <h2 class="card__title"><?php the_title(); ?></h2>
        <p class="card__excerpt"><?php echo get_the_excerpt(); ?></p>
        <time class="card__time"><?php the_time('Y.m.d'); ?></time>
      </div>

      <?php
        if(has_post_thumbnail()):
          the_post_thumbnail();
        else:
      ?>
        <img class="card__img-dummy" src="<?php echo get_template_directory_uri(); ?>/img/dammy.png" alt="">
      <?php endif; ?>
              
      <p class="card__category">
        <?php
          $categories = get_the_category();
          if ( $categories ) {
            echo $categories[0]->name;
            }
        ?>
      </p>
    </a>
  <?php endwhile; wp_reset_postdata(); ?>
<?php else : ?>
  <p class="">記事が見つかりませんでした。</p>
<?php endif; ?>

<a>~</a>はarchive.phpと全く同じです。

テンプレートタグの書き方を確認したい方は以下リンクよりどうぞ!

投稿記事一覧ページの表示確認をする

固定ページ作成時に決めたスラッグをURLの一部にして

http://localhost:10124/allpost/

で表示確認ができます。

home.phpを記事一覧ページにしてしまう方法

上記記事で、home.phpテンプレートをブログトップページを設定する方法を解説しました。

こちらも本質的には固定ページ(スラッグはblog)を使用して表示していることになります。

こちらの方法ではメインループのまま記事一覧を表示することができます。

つまり、archive.phpのコードの中身をそのまま使用できるということになります。

表示確認は

http://localhost:10124/blog/

でできますね。

ポイントまとめ

固定ページ(page-[slug].php)を使用して投稿記事一覧ページを作成する場合、

  • サブループを使用する
  • スラッグはファイル名の一部に使われる

home.phpを使用して投稿記事一覧ページを作成する場合、


スラッグは

  • URLの一部になる
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

スーパーうさぎアルバイター。
コーディングのお勉強してます。

コメント

コメントする

目次