ゼロから始めるWordPress自作テーマ #2「トップページにブログ記事の一覧を表示しよう」

「ゼロから始めるWordPress自作テーマ」では、既成のテーマを使わずにゼロからWordPressサイトを構築する方法を、私のブログサイト「OUNI studio」の構築例をもとに紹介します。

WordPressの既成テーマは簡単にインストールできますが、実際にサイトを構築する際には、既成のテーマをカスタマイズするよりも、自分でテーマを作成した方が簡単な場合が多いです。自分でWordPressテーマを作れるようになれば、サイトを自由にデザインできるようになります。

第2回は「トップページにブログ記事の一覧を表示しよう」です。

以下のようにブログのトップページに記事一覧を表示させるようにします。

第2回の完成形:ブログ記事の一覧が表示されるようになる

下準備

ダミーの記事をつくっておく

もし、まだ記事を作っていない場合は、いくつかダミーの記事を書いておきましょう。記事の一覧をつくっても表示される記事がないと寂しいので。

ぼくはひとまず3記事を用意しておきました。

表示させる用の記事をつくっておく

一度に表示する記事の最大数を設定しておく

トップページに最大何個の記事を一度に表示させるかを設定しておきます。

以下の場所で設定できます。

記事の最大表示件数の設定

これで下準備は完了です。

一覧表示をプログラミングする

編集のやりかた

それでは、実際に記事の一覧を表示させるプログラミングをしていきます。「外観」→「テーマエディタ」を開きます。そして、画面右側のテーマファイルから「index.php」を選択します。画面中央に index.php が表示されますので、そこの中身を編集していきます。

テーマエディタ上でプログラミングしていく

まずは、HTMLで一覧表示をつくる

まずは、HTMLで以下のように書きます。この状態では、WordPressで作った記事の情報をつかっていませんが、ひとまずHTMLで構造だけをつくります。

<body>
  <h1>記事の一覧</h1>

  <div>
    <hr>
    <div>
      <h3>記事のタイトル1</h3>
      <p>カテゴリ1</p>
      <time>2021.08.17</time>
    </div>
    <hr>
    <div>
      <h3>記事のタイトル2</h3>
      <p>カテゴリ2</p>
      <time>2021.08.16</time>
    </div>
    <hr>
    <div>
      <h3>記事のタイトル3</h3>
      <p>カテゴリ3</p>
      <time>2021.08.15</time>
    </div>
  </div>
  
</body>

保存して、サイトを確認すると、以下のように表示されます。

トップページに記事が表示された

PHPでブログ記事データを読み込む

それでは、ここから実際に記事のデータを取得してきて、トップページに表示させていきます。

WordPressの記事や画像やカテゴリなど、すべての情報はデータベースで管理されています。PHPというプログラミング言語で、そのデータベースから情報を取得してきて表示させるというのが、基本の処理の流れです。

それでは実際にやってみます。

index.php を以下のように書き換えます。

<body>
  <h1>記事の一覧</h1>

  <div>
    <!-- 投稿の数だけ繰り返して処理する -->
    <?php while ( have_posts() ) : ?>
        
      <!-- 投稿を取得 -->
      <?php the_post(); ?>

      <div>
        <hr>
        <!-- 投稿のタイトルを表示して、投稿ページへのリンクを張る -->
        <h3><a href="<?php echo get_permalink(); ?>"><?php echo the_title(); ?></a></h3>
        <!-- カテゴリを表示する -->
        <p><?php the_category(', '); ?></p>
        <!-- 投稿日時をを表示する -->
        <time datetime="<?php the_time('Y-m-d'); ?>"><?php the_time('Y.m.d'); ?></time>
      </div>

    <?php endwhile; ?>
  </div>
</body>

これで記事一覧を取得してきて表示させることができます。

解説:PHPを書くとき

HTMLではなく、PHPを書く場合は <?php と ?> で囲って、以下のように書きます。

<?php ここにPHPのプログラムを書く ?>

このように囲われている部分がPHPのコードで、それ以外がHTMLのコードです。

解説:データを取得する

データベースからデータを取得してくる場合は、PHPのコードを書きます。

どの関数でどのデータが取得できるかは、以下の関数リファレンスに書かれています。

今回は以下の関数を使っています。

そして、これをHTMLのコードの中に埋め込んでいます。

      <!-- 1つの投稿を取得して -->
      <?php the_post(); ?>

      <div>
        <hr>
        <!-- 投稿のタイトルを表示する。そして投稿ページへのリンクを張る。 -->
        <h3><a href="<?php echo get_permalink(); ?>"><?php echo the_title(); ?></a></h3>
        <!-- 投稿のカテゴリを表示する。 -->
        <p><?php the_category(', '); ?></p>
        <!-- 投稿日を表示する -->
        <time datetime="<?php the_time('Y-m-d'); ?>"><?php the_time('Y.m.d'); ?></time>
      </div>

解説:投稿の数だけ繰り返す

プログラムを使うと、同じ処理を簡単に繰り返すことができます。今回は While文を使って繰り返しさせています。

    <!-- 投稿が取得できる間、繰り返す。have_postsは投稿があるかどうかを判定する関数。 -->
    <?php while ( have_posts() ) : ?>
        
      <!-- ここを繰り返す -->

    <?php endwhile; ?>

まとめ

今回は、投稿記事の一覧を表示させました。

「データベースから、PHPで書かれている関数でデータを取得してきて、HTMLで表示させる」という流れがWordPressの基本です。

これが理解できれば、大抵のことは同じようなやりかたで出来ます。

次回は、投稿のサムネイル画像を表示させてみます。