WordPress自作テーマ-カテゴリーを出力する

記事内に商品プロモーションを含む場合があります

カテゴリーを出力する方法は色々あって、WordPressテーマ化をする際、どれを使えば良いのか迷うことも多いと思います。single.pageはthe_category()でカテゴリーを表示、アーカイブページへのリンクを表示しました。
使用する場合はループの中で使用する、というルールがあります。

目次

the_category()でカテゴリーを出力

the_category() は投稿に属しているカテゴリーを出力することができました。
簡単に出力できて、カテゴリー一覧ページへのリンクがつくので便利です。

注意点があって、 the_category()には 自動で<ul class=”post-categories”>が付与されます。htmlにulを記述している場合、ulは二重になってしまいます。パラメータに何らかの文字列を指定することで、ulやliは出力されなくなり、aタグとテキストのみにすることができます。

the_category()にはオプションで、区切り文字、親カテゴリーの表示方法、投稿のid(初期値は現在の投稿)といったパラメータを与えることができます。single.phpでは区切り文字に「,」を記述しました。カンマ区切りで複数カテゴリーを表示することができるようになります。

get_the_category() でカテゴリーを出力

get_the_category()を記述することで、投稿に属するカテゴリーをオブジェクトの配列で取得できます。
パラメータを指定しないと、投稿が属するカテゴリーの各情報を取得します。

スタイルを自由に設定することができて、foreachを使うことで複数のカテゴリーを出力することができます。

functions.phpに関数を定義します。パラメータに、カテゴリー名の他リストとクラスを与え、single.phpのthe_category()を関数に置き換えてみます。

function categories()
{
    $cats = get_the_category();
    foreach ($cats as $cat) {
        echo '<li><a href="' . get_category_link($cat->term_id) . '" ',
        'class="' . esc_attr($cat->slug) . '">',
        esc_html($cat->name),
        '</a></li>';
    }
}

クラス付きで、カテゴリーをリスト形式で表示することができました。
スタイルをつけたい場合や、カテゴリーを複数表示したい場合、最初の1つだけ表示するといったこともできるので、カスタマイズしたい場合はget_the_category()が便利です。

まとめ

the_category()は、該当カテゴリーへのリンクを含む状態で出力してくれるタグでした。例えばarchive.phpのように、投稿をaタグで囲っている場合、the_category()ではaタグが二重になってしまいます。
このような場合、必要な情報だけ取得できるget_the_category()が有効に使えます。

簡単にカテゴリーを出力したい場合はthe_category()、スタイルをつけたい場合やその他情報を付与したい場合はget_the_category()を使用するなど使い分けできると便利です。

目次