説明
has_term() は、投稿に指定したタームが付いているかを判定する関数です。
基本構文
has_term( int|string|array $term = '', string $taxonomy = '', int|WP_Post $post = null ): bool
引数
$term:ターム(ID、スラッグ、名前)$taxonomy:タクソノミー名$post:投稿IDまたはオブジェクト
戻り値
付いていれば true。
使い方(サンプル)
if ( has_term( 'rock', 'genre' ) ) {
// rock ジャンルの投稿
}
注意点
- 引数 $term を空にすると、何かしらのタームが付いているかの判定になります。
実務での使いどころ
- 投稿が、特定のターム(ID・スラッグ・名前)を持つかを判定するとき。
- カスタムタクソノミーの、タームの有無で、表示を変えるとき。
よくあるミスと対処
$termを省略すると、そのタクソノミーに、タームが1つでもあればtrueになる。特定のタームの判定には、タームを指定する。- カテゴリーの判定に使うとき、
$taxonomyをcategoryにしていない。 - アーカイブページの判定に使っている。アーカイブの判定は、
is_tax()。
NG例
if ( has_term( 'important' ) ) {
// タクソノミーがなく、意図した判定にならない
}
OK例
if ( has_term( 'important', 'news_cat' ) ) {
// important タームを持つ投稿
}
使い分け早見表
| やりたいこと | 使うもの |
|---|---|
| 投稿が、タームを持つか(任意のタクソノミー) | has_term() |
| 投稿が、カテゴリーに属するか | in_category() |
| タームのアーカイブか | is_tax() |
関連項目
has_category()、has_tag()、in_category()
公式リファレンス:has_term() | Function | WordPress Developer Resources

コメント