WordPress 詳細ページを作る

記事の詳細ページを表示するためのテンプレートを作りましょう。テーマフォルダの中に single.php を作成してください。

まずは、ヘッダーとフッター、そして必要ならサイドバーを読み込みます。そして、記事を出力する箇所に簡単なHTMLを書いておきます。

<?php get_header() ?>
<main>
    <section>
        <time>投稿日<time> 
        <h2>記事のタイトル</h2>
        <div>
            記事の内容が入ります。
        </div>
    </section>
</main>
<?php get_sidebar() ?>
<?php get_footer() ?>

記事を呼び出すループを使用して、記事情報を呼び出します。実際は single.php で呼び出される記事は1つなのでループを使用する必要はないのかもしれませんが、WordPress 公式で推奨されているため使用しておきます。記事のタイトルや投稿日、本文もそれぞれ呼び出しコードに変換しましょう。

<?php if ( have_posts() ): while ( have_posts() ): the_post() ?> 
    <section>
        <time><?php the_time('Y/m/d') ?><time> 
        <h2><?php the_title() ?></h2>
        <div>
            <?php the_content() ?>
        </div>
    </section>
<?php endwhile; endif ?> 

カテゴリーを出力する

まず WordPress での「カテゴリー」は、普通のブログ等で見られるそれとは少し違っているかもしれません。大まかな分類「タクソノミー(taxonomy)」があり、その下に用語「ターム(term)」を設定できるようになっています。

taxonomy1
└ term1
└ term2
└ term3

taxonomy2
└ term1
└ term2
└ term3

「投稿」に最初からある「カテゴリー」とは?

とはいえ、WordPress の初期の時点では投稿に「カテゴリー」というものがすでに存在しています。これは厳密には「タクソノミー名:カテゴリー」という分類があると解釈して頂ければよいと思います。

なぜタクソノミーとタームとなっているのか

タクソノミーは、カスタマイズで増やすことができます。なぜタクソノミーを増やす必要があるかというと…

記事に「都道府県」を設定し、地域別の一覧ページを作りたい!

しかし、 「タクソノミー:カテゴリー」にはすでに別のターム(お知らせ、ブログ、新着情報…etc)がセットされている

ここに都道府県の情報を47個もいれてしまうと、ややこしい…

そこで「タクソノミー:都道府県」という新たな分類を作成してあげれば分かりやすく、都道府県が設定されている記事の一覧ページも簡単に作成することもできます。

普通、レンタルブログ等ではカテゴリー機能があっても、その大まかな分類まで増やすことはなかなかできません。WordPress ではそこを柔軟にカスタマイズできるようになっています。タクソノミーとタームの関係、カテゴリーは単なる分類名であるということはしっかり覚えておきましょう。

「タクソノミー:カテゴリー」のタームの出力

まず記事に紐づいている「タクソノミー:カテゴリー」のタームをget_the_categories()で全て取得しましょう。

実はget_the_terms()と呼ばれるタームを取得する関数があり、タームの取得はそちらを使用するのが普通です。しかし「タクソノミー:カテゴリー」だけは特別扱いを受けており、専用の関数がいくつか存在しています。

<ul>
<?php foreach ( get_the_categories() as $category ): ?>
    <li><?= $category->name ?></li>
<?php endforeach ?>
</ul>

これだけだとカテゴリーの名前しか出力されないので、リンクを付けてみましょう。get_category_link( カテゴリーID )でカテゴリーのターム一覧ページへのリンクを取得できます。

<?php foreach ( get_the_categories() as $category ): ?>
    <li><a href="<?= get_category_link( $category->term_id ) ?>"><?= $category->name ?></a></li>
<?php endforeach ?>

カスタムフィールドを出力する

WordPress には「カスタムフィールド」と呼ばれるフィールドがあります。これはタイトルと本文以外に、記事に追加できる項目のことです。

「住所」というカスタムフィールドを作ったとします(カスタムフィールドの作り方はプラグインなどを使用してください)。フィールド作成時、表示の名前とは別に「キーの名前」を指定します。カスタムフィールドを呼び出すには、
post_custom('キーの名前')を使いましょう。今回はキーの名前は address として登録しました。

<h2><?php the_title() ?></h2>
<div>
    <?php the_content() ?>
</div>
<p><?php post_custom('address') ?></p>

前回:ブログトップページを作る