概要と目標
アーカイブページや、検索結果ページ、
404ページのテンプレートも作ろう。
カテゴリーなどの一覧を表示するアーカイブページや、
検索結果を表示するページ、ページが存在しなかった時の404ページの作り方を学習しましょう。
カテゴリーなどの一覧を表示するアーカイブページや、
検索結果を表示するページ、ページが存在しなかった時の404ページの作り方を学習しましょう。
アーカイブページとは、カテゴリーや、タグの一覧、日付アーカイブなど、
記事の一覧を表示するページのこと。
アーカイブページは、「archive.php」というファイルでテンプレートが作成できる。
現時点でアーカイブページの役割は「index.php」のテンプレートで表示している。
現状でもほとんど問題がないが、見出しの部分のみ変更したい。
したがって今回は、index.phpを複製して、archive.phpを作成する
the_archive_title関数 ・・・ アーカイブのタイトルを表示する関数the_archive_title(タイトルの直前に出力する文字, タイトルの直後に出力する文字)
省略可
引数の詳細はWordPress Codex 日本語版を参照
<main class="l-main">
<div class="p-articles">
<h2 class="c-heading -primary">Blog & News</h2>
<?php endif; ?>
</div>
</main>
the_archive_title()に置き換える
<h1 class="c-heading -primary"><?php the_archive_title(); ?></h1>
現在テンプレートパーツである「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 日本語版を参照
h3 要素、h2 要素になるようにする
<?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; ?>
h2 要素になっているかを確認
検索結果を表示するページは、「search.php」というファイル名のテンプレートを使う。
現時点では、検索結果を「index.php」のテンプレートで表示している。
現状でもほとんど問題がないが、こちらも見出しの部分を変更したい。
したがって今回は、archive.phpを複製して、search.phpを作成する
the_search_query関数 ・・・ 検索クエリを表示する関数the_search_query()
引数の詳細はWordPress Codex 日本語版を参照
h1要素の要素内容を、the_search_query()に置き換える
<h1 class="c-heading -primary"><?php the_search_query(); ?> の検索結果</h1>
<?php else : ?>
<p>見つかりませんでした。</p>
<?php endif; ?>
存在しないページへアクセスされた場合は、「404.php」というファイルがテンプレートとして利用される。
なお、離脱を避けるために、検索フォームを表示するなどするとよい。
get_search_form関数 ・・・ 検索フォームを表示する関数get_search_form(表示するか?)
省略可能
表示するか?: 画面に表示する場合は true(初期値)、HTMLを取得する場合は false
引数の詳細はWordPress Codex 日本語版を参照
the_contets()の部分を変更したりする)
<?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(); ?>
WordPressでは、様々なテンプレートファイルを使い分けることで、
ページによって出力するHTMLを変更することができる。
archive.phpに作成するsearch.phpに作成する404.phpに作成する