term_exists() – タクソノミータームが存在するか判断する関数

投稿日 :

カテゴリー :

term_exixts() 関数は、タクソノミータームが存在するかどうかを判断する関数です。

目次

term_exists() 関数とは

タクソノミータームが存在するかどうか判断します。

以前は 2.3.0 で登場した is_term() 関数でしたが非推奨になり、3.0.0 でこの関数が用意されました。

パラメーター

$termターム ID、タムスラッグ、ターム名を設定
$taxonomyタクソノミー名を設定
$parent_term検索対象の親タームの ID

使い方

返り値が true or false ではない点に注意が必要です。

  • タームが存在しなければ null を返す
  • タクソノミーが指定されておらず、タームが存在した場合にはターム ID を返す
  • タクソノミーが指定され、タームが存在する場合にはターム ID とタクソノミー ID を配列で返す

これらの挙動を確認してみます。

ターム ID としてあり得なさそうな数字を指定してみます。

var_dump( term_exists( 10000 ) );

// 結果
NULL

まだ立ち上げて間もない WordPress 環境ですので、ターム ID は 10000 まで達していないと思い、この数値を指定したところ、結果は NULL となりました。

次に、タクソノミーは指定せず、存在していそうなターム ID を指定してみます。

var_dump( term_exists( 1 ) );

// 結果
string(1) "1"

この場合、タームが存在しているためターム ID を返してきます。

次に、実際に存在するタクソノミー名とターム名を入れてみます。

var_dump( term_exists( 'テンプレート', 'category' ) );

// 結果
array(2) {
  ["term_id"]=>
  string(2) "38"
  ["term_taxonomy_id"]=>
  string(2) "38"
}

存在していたため、ターム ID とタクソノミー ID を返してきました。

これらが存在するかどうかで条件分岐するには以下のような方法があります。

if ( is_array( term_exists( 'テンプレート', 'category' ) ) ) {
	// カテゴリー「テンプレート」が存在する場合
}

存在する場合は配列で返ってくるため is_array() で判断するという方法もあります。

フック

term_exists_default_query_args

apply_filters( ‘term_exists_default_query_args’, array $defaults, int|string $term, string $taxonomy, int|null $parent_term )

まとめ

タクソノミーやタームを扱う際にはよく利用する関数ですので、よく動作を確認しておきましょう。

GitHub で利用ケースを探してみるとたくさん見つけられるのでぜひ参考にしてみてください。

コーディングや
WordPress開発のリソースが足りない!

オレインデザインでは、デザインデータからの HTML コーディングから WordPress テーマ・プラグイン開発まで幅広くウェブ制作に対応しています。

お気軽にお問い合わせください。

WordPress 6.5.x 対応版を出版しました

WordPress デフォルトテーマ Twenty Twenty-Four を使って、シンプルなブログやポートフォリオサイト、そしてコーポレートサイトを作りながら、ブロックテーマやサイトエディターの基本を理解することができます。