カテゴリーを出力する方法は色々あって、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()を使用するなど使い分けできると便利です。