[WordPress] カスタム投稿タイプのタクソノミーやターム関連のタグと関数を11個をまとめました

 2015.12.21  2017.10.30

WordPressのカスタム投稿タイプやカスタム分類はとても便利ですが、テンプレートやテンプレートタグが多くて、どれを使ったら何が取得・表示されるのか分からなくなりますよね。

毎回カスタム投稿を触る度に調べるのが面倒なので、カスタム投稿、カスタム分類(タクソノミー、ターム)に関連するタグや関数をまとめてみました!

ここに載せている情報の殆どは、WordPress Codex 日本語版を参考にさせていただいています。(文章やコードサンプルも少しお借りしています)パラメーターは必須のものとよく使いそうなオプションのみ載せており、戻り値の出力結果はvar_dumpで出力しています。また、コードサンプルは以下の状況を想定したものです。

カスタム投稿タイプ
観光情報(travel)
タクソノミー
地域(area)階層ありカテゴリー
ターム
東京(tokyo)-代官山(daikanyama)…、埼玉(saitama)-大宮(omiya)…

get_terms

指定したタクソノミーに含まれるターム情報を取得し、オブジェクトの配列で返します。もしタクソノミーなどが存在しなければWP_Error オブジェクトを返します。配列で返ってくるので、foreachなどで繰り返し処理して出力します。

パラメーター

$taxonomies
(文字列|配列)(必須):タームを取得するタクソノミー。
$args
(文字列|配列)(オプション) 戻り値の種類を変更。指定できる引数はこちら

戻り値

以下はareaタクソノミーで記事があるターム全情報の出力結果例です。タームが10個あれば、array(10)で10個分出力されます。

サンプルコード

get_term

タームIDを指定してタームの全データをデータベースから取得します。タームIDは指定したタクソノミーに含まれるタームでなければ取得できません。

パラメーター

$term
(必須):整数なら、それを ID とするタームをデータベースから取得する。
taxonomy
(必須):$termが含まれるタクソノミーの名前。タクソノミーが存在しなければWP_Errorが返される。

戻り値

サンプルコード

get_the_terms

投稿IDから投稿記事が属するタクソノミー情報を取得します。こちらも配列で返ってくるので、foreachなどで出力します。

パラメーター

$id
(整数)(必須) 投稿ID。現在表示しているページなら$post->IDで取得可能。
$taxonomy
(文字列)(必須)タームを取得するタクソノミーの名前。

戻り値:3つのタームを持つ投稿の場合

値がなければbool(false)が返されます

get_term_by

タームのid、スラッグ、名前などからタームの全データをデータベースから取得します。

パラメーター

$field
(文字列)(必須) ‘id’, ‘slug’, ‘name’, または ‘term_taxonomy_id’ の何れか。初期値: ‘id’
$value
(文字列|整数)(必須) この値を検索。
$taxonomy
(文字列) (必須) タクソノミー名。category, post_tag, link_category またはカスタム分類の名前。

戻り値

  • term_id
  • name
  • slug
  • term_group
  • term_taxonomy_id
  • taxonomy
  • description
  • parent
  • count

「$term」はデフォルトでタクソノミーのスラッグ名を出力するので、下記のようにスラッグからタームの情報を取得することができます。アーカイブページでも使用可能です。

get_term_children

指定されたタームの子ターム情報の全てをひとつの配列にまとめます。 階層のあるタクソノミーについてのみ有用です。もしタームが指定されたタクソノミーに無ければ、空の配列を返します。

パラメーター

$term
(文字列|整数)(必須)子タームを取得するタームのID
$taxonomy
(文字列)(必須)タクソノミーの名前

the_terms

投稿記事に付けられたタームを文字列として表示します。ユーザー定義の文字で区切ったカスタム分類のタームにリンクを付けて表示し、戻り値はありません。

パラメーター

id
(整数)(必須) 投稿 ID
$taxonomy
(文字列)(必須) タクソノミーの名前。
$before
(文字列)(オプション) 先頭のタームの前に表示する文字列。
$sep
(文字列)(オプション) ターム(およびリンク)を区切る文字列。初期値: ‘, ‘
$after
(文字列)(オプション) 最後のタームに続けて表示する文字列。

サンプルコード

現在の投稿のカテゴリーをリスト表示する→「カテゴリー: 代官山 / 大宮 / 池袋」

single_term_title

現在のページのタームタイトルを表示または取得します。通常はタクソノミー(ターム)アーカイブページで使用します。

パラメーター

$prefix
(文字列)(オプション) タイトルの前に出力するテキスト。
display
(真偽値)(オプション) タイトルを表示する(TRUE)、PHP で使えるようにタイトルを返す(FALSE)

get_the_term_list

指定されたタクソノミー(カスタム分類)に関して、投稿に付けられたタームの HTML 文字列を返します。 タームの文字列はそのタームのアーカイブページへリンクします。

パラメーター

$id
(整数)(必須)投稿ID
$taxonomy
(文字列)(必須)タクソノミーの名前
$before
(文字列)(オプション)前に入れる文字列
$sep
(文字列)(オプション)タームを区切る文字列
$after
(文字列)(オプション)後に続く文字列

get_term_link

指定された(タクソノミー)タームのアーカイブページへのパーマリンクを返します。 タームが存在しないときは WP_Error オブジェクトを返します。

パラメーター

$term
(オブジェクト|整数|文字列)(必須)リンクを取得するタームのオブジェクト、ID またはスラッグ。
$taxonomy
(文字列)(オプション)タクソノミーのスラッグ。$term がオブジェクトのときはオプション。

the_taxonomies

このテンプレートタグをループの中に記述すると、投稿に関連付けたカテゴリーおよびカスタム分類をリンク有りの状態で表示します。 また、ループ外に記述した場合は、ループの最終投稿に関連づいたカテゴリーおよびカスタム分類を表示します。

wp_get_object_terms

指定されたオブジェクト(複数でもよい)に付いている、指定されたタクソノミー(カスタム分類)のタームを取得します。

パラメーター

$object_ids
(文字列|配列)(必須) タームを取得するオブジェクトのID 。
$taxonomies
(文字列|配列)(必須) タームを取得するタクソノミー。
$args
(配列|文字列)(オプション) 戻り値の種類を指定。