既存テーマのカスタマイズやクライアントワーク等、投稿のカテゴリーに関する情報を取得して、様々なコンテンツを作成・編集したいケースがあります。

今回は、これからWordPress開発を始める方向けに、カテゴリーを取得する関数を用途別に分類してみました。

はじめは、どの関数を使えばどの情報を取得できるのか、把握するのが難しいと思いますので、この記事を参考に、大まかな方向性を知っていただければ幸いです。

全てのカテゴリーを取得・表示する

フッターやサイドバーにカテゴリー一覧を表示する等、カテゴリーの情報を全て取得・表示したい時は、下記が便利です。

get_categories() 取得したカテゴリー情報を元に自由なコンテンツを作りたい
wp_list_categories() カテゴリー一覧をリスト形式で表示したい
wp_dropdown_categories() カテゴリー一覧をドロップダウンリストで表示したい

get_categories()

全てのカテゴリーをオブジェクトの配列で取得できます。HTML等を出力するわけではないので、取得した情報を元に、以下のように様々な用途に使用できます。

  • HTML構造を自由に決めたい
  • 名前やリンク以外の情報(説明文等)も取得したい

下記は、各カテゴリーの名前とURLと説明文を出力する記述例です。エディタに貼り付けて内容を確認してみてください。

$categories = get_categories( array(
  'orderby' => 'name',
  'order' => 'ASC'
));
foreach( $categories as $category ) {
  echo '<p>カテゴリー名:' . $category->name. '</p>';
  echo '<p>カテゴリーページのURL:' . get_category_link( $category->term_id ) . '</p>';
  echo '<p>説明文:' . $category->description . '</p>';
}

wp_list_categories()

カテゴリー一覧をリスト形式で取得・表示できます。以下のように少ない記述量でリンク付きのカテゴリーリストを表示できるので、手軽に実装したい方におすすめです。

echo '<ul>';
wp_list_categories('title_li=');
echo '</ul>';

出力されるHTMLは下記になります。

<ul>
  <li class="cat-item cat-item-ID"><a href="カテゴリーのURL">カテゴリー名</a></li>
  <li class="cat-item cat-item-ID"><a href="カテゴリーのURL">カテゴリー名</a></li>
︙
</ul>

クラス等は自動で付与されますので、HTML構造を自分で決めたい場合は、get_categories()を使いましょう。

wp_dropdown_categories()

ドロップダウン形式(セレクトボックス)でカテゴリー一覧を表示できる関数です。こちらも用途がかなり決まっているので、ドロップダウンで表示したい時だけに使うのがおすすめです。

wp_dropdown_categories();

出力されるHTMLは下記になります。

<select name='cat' id='cat' class='postform' >
  <option class="level-" value="ID">カテゴリー名</option>
  <option class="level-" value="ID">カテゴリー名</option>
︙
</select>

各投稿に割り当てられたカテゴリーだけを取得

投稿で作成した記事に割り振られたカテゴリー情報だけを取得・表示したい時は下記を使用します。記事とカテゴリーをセットで扱いたい時に非常に便利です。

the_category() カテゴリーをリスト形式で表示
get_the_category() カテゴリーをオブジェクトの配列で取得

the_category()

投稿に属するカテゴリーをリスト形式で表示できます。

the_category();

デフォルトでは、以下のようなHTMLを出力します。

<ul class="post-categories">
  <li><a href="https://wpreset.local/category/uncategorized/" rel="category tag">未分類</a></li>
︙
</ul>

パラメータを変更することで、空白区切りやコンマ区切り等もできます。

get_the_category()

投稿に属するカテゴリーをオブジェクトの配列で取得できます。フォーマットが決まっていないので、以下のようにカテゴリーの情報を元に様々な表現が可能となっています。

$categories = get_categories();
foreach( $categories as $category ) {
  echo '<p>カテゴリー名:' . $category->name. '</p>';
  echo '<p>カテゴリーページのURL:' . get_category_link( $category->term_id ) . '</p>';
  echo '<p>説明文:' . $category->description . '</p>';
}

自分でHTMLを決めて、自由なコンテンツを作りたい場合におすすめです。

カテゴリーの特定の値を取得

ここまで紹介した関数は、カテゴリーの情報を全て取得したり、出力形式が決められているものでした。カテゴリーの名称や説明文だけを取得したい場合は、下記が便利です。

single_cat_title() カテゴリー名を取得
category_description() カテゴリーの説明文を取得

これらは、基本的にカテゴリーページやパンくずリスト等で使用することが多いです。下記に使用例をご紹介してますので、参考にしてください。

一部の値からカテゴリーの情報を取得する

開発状況によっては、カテゴリーを1から全て取得しなくても、一部の値を元に他のデータを取得したいことがあります。そんな時は下記が便利です。

get_the_category_by_ID() カテゴリーのIDからそのカテゴリーの名称を取得
get_category_by_slug() カテゴリーのスラッグからオブジェクト(あらゆる情報)を取得
get_category_link() カテゴリーのIDからカテゴリーページのURLを取得

まとめ

カテゴリーの様々な情報を取得する関数をご紹介しました。WordPressで本格的な開発を行わない方も、これらを覚えておくことで、エラーの原因を探すのに役に立つかもしれません。

当記事で紹介した方法でカテゴリー一覧を表示する場合、並びが昇順・降順等に決められてしまいます。もし、任意の並びにするなら、下記のプラグインを使って並び替えするのがおすすめです。