---
title: "term_exists() &#8211; タクソノミータームが存在するか判断する関数"
canonical_url: "https://olein-design.com/blog/term_exists"
language: "ja"
date_published: "2024-05-13T11:09:25+09:00"
date_modified: "2024-05-13T12:25:41+09:00"
content_type: "post"
author: "久野晃司"
taxonomies:
  category:
    - "WordPress"
  post_tag:
    - "Conditional Tag"
    - "WordPress functions"
---

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

`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()` で判断するという方法もあります。

[埋め込みコンテンツ](https://www.php.net/manual/ja/function.is-array.php)

## フック

### term_exists_default_query_args

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

## まとめ

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

[GitHub で利用ケースを探してみる](https://github.com/search?q=term_exists%28&type=code)とたくさん見つけられるのでぜひ参考にしてみてください。

[埋め込みコンテンツ](https://developer.wordpress.org/reference/functions/term_exists)
