Chapter09 アーカイブ、検索結果、404ページの作成

概要と目標 アーカイブページや、検索結果ページ、
404ページのテンプレートも作ろう。

カテゴリーなどの一覧を表示するアーカイブページや、
検索結果を表示するページ、ページが存在しなかった時の404ページの作り方を学習しましょう。

今回のゴール

RERUN

アーカイブページの作成カテゴリなどの一覧は、
archive.phpを使う。

アーカイブページとは、カテゴリーや、タグの一覧、日付アーカイブなど、
記事の一覧を表示するページのこと。
アーカイブページは、「archive.php」というファイルでテンプレートが作成できる。

アーカイブページの作成を作成してみよう。

現時点でアーカイブページの役割は「index.php」のテンプレートで表示している。
現状でもほとんど問題がないが、見出しの部分のみ変更したい。
したがって今回は、index.phpを複製して、archive.phpを作成する

the_archive_title(ザ アーカイブ タイトル)関数 ・・・ アーカイブのタイトルを表示する関数
the_archive_title(タイトルの直前に出力する文字, タイトルの直後に出力する文字)
                                      省略可

引数の詳細はWordPress Codex 日本語版を参照

  1. 「dummy」 内に「index.php」を複製し、ファイル名を「archive.php」に変更する
  2. 「dummy」 › 「archive.php」をテキストエディタで開く
  3. 「.p-articles」のsection要素をdiv要素に変更する
dummy/archive.php
<main class="l-main">
  <div class="p-articles">
    <h2 class="c-heading -primary">Blog & News</h2>
    <?php endif; ?>
  </div>

</main>
  1. h2要素をh1要素に変更し、要素内容をthe_archive_title()に置き換える
dummy/archive.php
<h1 class="c-heading -primary"><?php the_archive_title(); ?></h1>
  1. 上書き保存
  2. サイトにアクセス
    http://localhost/wp-lesson/
  3. カテゴリーの一覧を表示して、 archive/phpが読み込まれているかを確認
ブラウザでの表示例

RERUN


ページによる分岐ページによって
出力するHTMLを変更できる。

現在テンプレートパーツである「content.php」では、記事のタイトルを h3要素で出力している。
ただし、アーカイブページなど、トップページ以外では h2 要素の方がふさわしい。
そこで、トップページでは h3要素、その他のページでは、h2要素で出力されるように変更したい。
WordPressでは、ページごとの分岐に使える「条件分岐タグ」が用意されている。

主な条件分岐タグ
条件 関数名 説明
トップページ is_front_page() サイトのトップページが表示されている時
投稿一覧ページ is_home() メインブログページが表示されている時
(フロントページの設定で「固定ページ」を選択している場合は、投稿ページとして指定したページ)
個別投稿ページ is_single() 個別投稿のページが表示されている時
(引数に投稿IDや、スラッグ名を渡すとその投稿ページのみに絞れる)
固定ページ is_page() 固定ページが表示されている時
(引数にページIDや、スラッグ名を渡すとその投稿ページのみに絞れる)
固定ページ is_page() 固定ページが表示されている時
(引数にページIDや、スラッグ名を渡すとその投稿ページのみに絞れる)
アーカイブページ is_archive() 各アーカイブページが表示されている時
検索結果ページ is_search() 検索結果のページが表示されている時
404ページ is_404() "HTTP 404: Not Found"エラーページが表示されている時

条件分岐タグの詳細はWordPress Codex 日本語版を参照

ページによる分岐をやってみよう

  1. 「dummy」 › 「template-parts」 › 「content.php」をテキストエディタで開く
  2. 見出しをトップページの時には h3 要素、
    それ以外のぺーじでは h2 要素になるようにする
dummy/template-parts/content.php
<?php if ( is_front_page() ) : ?>
<h3 class="p-article__title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<?php else : ?>
<h2 class="p-article__title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php endif; ?>
  1. 上書き保存
  2. サイトにアクセス
    http://localhost/wp-lesson/
  3. アーカイブページで、見出しが h2 要素になっているかを確認
ブラウザでの表示例

RERUN


検索結果ページの作成検索結果のテンプレートは、
search.php。

検索結果を表示するページは、「search.php」というファイル名のテンプレートを使う。

アーカイブページの作成を作成してみよう。

現時点では、検索結果を「index.php」のテンプレートで表示している。
現状でもほとんど問題がないが、こちらも見出しの部分を変更したい。
したがって今回は、archive.phpを複製して、search.phpを作成する

the_search_query(ザ サーチ クエリ)関数 ・・・ 検索クエリを表示する関数
the_search_query()

引数の詳細はWordPress Codex 日本語版を参照

  1. 「dummy」 内に「archive.php」を複製し、ファイル名を「search.php」に変更する
  2. 「dummy」 › 「search.php」をテキストエディタで開く
  3. h1要素の要素内容を、the_search_query()に置き換える
dummy/search.php
<h1 class="c-heading -primary"><?php the_search_query(); ?> の検索結果</h1>
  1. 記事が見つからなかった時のメッセージを「見つかりませんでした」に変更
dummy/search.php
<?php else : ?>

  <p>見つかりませんでした。</p>

<?php endif; ?>
  1. 上書き保存
  2. サイトにアクセス
    http://localhost/wp-lesson/
  3. 検索結果が search.phpで表示されているかを確認
ブラウザでの表示例

RERUN


404ページの作成存在しないページは、
404.phpで作成する。

存在しないページへアクセスされた場合は、「404.php」というファイルがテンプレートとして利用される。
なお、離脱を避けるために、検索フォームを表示するなどするとよい。

404.phpを作ってみよう。

get_search_form(ゲット サーチ フォーム)関数 ・・・ 検索フォームを表示する関数
get_search_form(表示するか?)
                  省略可能

表示するか?: 画面に表示する場合は true(初期値)、HTMLを取得する場合は false

引数の詳細はWordPress Codex 日本語版を参照

  1. 「dummy」 内に「page.php」を複製し、ファイル名を「404.php」に変更する
  2. 「dummy」 › 「404.php」をテキストエディタで開く
  3. 以下のように変更する
    (ループを削除したり、h1要素の内容を変更したり、画像を削除したり、the_contets()の部分を変更したりする)
dummy/404.php
<?php get_header(); ?>

  <main class="l-main -single">
    <header class="p-hero">
      <h1 class="p-hero__title">404 Not Found</h1>
    </header>
    <div class="l-contents -themeWhite">
      <div class="p-article">
        <div class="l-container -slim">
          <section class="p-article__body">
            <h2>お探しのページは、見つかりませんでした。</h2>
            <p>検索で見つかるかもしれません。</p>
            <?php get_search_form(); ?>
          </section>
        </div>
        <!-- /.l-container -->
      </div>
      <!-- /.l-article -->
    </div>
    <!-- /.l-contents -->
  </main>

<?php get_footer(); ?>
  1. 上書き保存
  2. 存在しないページにアクセス
    http://localhost/wp-lesson/xxxx/
  3. 404.phpの内容が表示されているかを確認
ブラウザでの表示例

RERUN


まとめ様々なテンプレートファイルを使いこなす。

WordPressでは、様々なテンプレートファイルを使い分けることで、
ページによって出力するHTMLを変更することができる。

  • アーカイブページは、archive.phpに作成する
  • 検索結果ページは、search.phpに作成する
  • 404ページは404.phpに作成する