has_term() の使い方|説明・引数・注意点

説明

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

コメント

タイトルとURLをコピーしました