ゼロから始めるWordPress自作テーマ #8「固定ページをつくろう」

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

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

第8回は「固定ページをつくろう」です。

固定ページの表示は、ブログ投稿ページと同じように階層テンプレートに沿ってファイルを用意するだけです。

完成形

今回の完成形は以下のようになります。ヘッダーのリンクから、各固定ページに遷移して、固定ページの内容を表示させます。

今回の完成形

今回の記事の完成形のソースコードは以下から取得できます。

固定ページの用意

まず、表示する固定ページをあらかじめ作成しておきます。

今回は、about , works , contacts という名前の3つのページを作ります。ページの設定で、パーマリンクのURLスラッグをそれぞれ about , works , contacts と指定しておきます。URLスラッグは、ページのURLになります。例えばURLスラッグを about と指定すると、その固定ページのURLが https://ouni.work/about になります。

固定ページの作成画面で、URLスラッグを指定する

ヘッダーからのリンクURLを指定

固定ページを用意したので、次にその固定ページへのリンクをヘッダーに用意します。

リンクを<a>タグで直接URLを指定しても構わないのですが、今回はサイトのホームURLから相対で指定するようにします。こうすることで、サイトのホームURLが変わっても正しいリンクを張ることができます。サイトのホームURLは、home_url取得できます。header.php を以下のように書き換えます。

<nav class="nav">
  <ul class="nav-wrapper">
    <li class="nav-item"><a href="<?php echo home_url('/about'); ?>">About</a></li>
    <li class="nav-item"><a href="<?php echo home_url('/works'); ?>">Works</a></li>
    <li class="nav-item"><a href="<?php echo home_url('/contact'); ?>">Contact</a></li>
  </ul>
</nav>

home_urlの詳細は以下から。

固定ページ表示用のファイルを作成

最後に、固定ページを表示するためのコードを書いていきます。階層テンプレートに沿うと、固定ページは以下の順で読み込まれます。

  1. page-$slug.php を読み込む
  2. ない場合は、page-$id.php を読み込む
  3. ない場合は、page.phpを読み込む
  4. ない場合は、singlar.phpを読み込む
  5. ない場合は、index.php を読み込む
階層テンプレート

特定の固定ページの表示をつくりたい場合は、page-$slug.php や page-$id.php を使います。今回は固定ページ共通の表示でOKなので page.php を作成します。page.phpのコードは、ブログ投稿ページとほとんど同じです。固定ページに不要な部分 (作成日・カテゴリ・アイキャッチ画像)を削除しています。

<?php get_header(); ?>

<main id="main-single">
  <?php while (have_posts()) : ?>
    <div id="content-single">
      <!-- 投稿を取得 -->
      <?php the_post(); ?>
      <!-- タイトル -->
      <h1 id=""><?php echo the_title(); ?></h1>
      <!-- 中身 -->
      <?php the_content(); ?>
    </div>
  <?php endwhile; ?>
</main>

<?php get_footer(); ?>

まとめ

今回は固定ページの表示部分を作成しました。階層テンプレートに沿って、作っていくやりかたのイメージが大分つかめてきたのではないでしょうか。

次回は、Contactページにコンタクトフォームをつくっていきます。