has_term()
Check if the current post has any of given terms.
The given terms are checked against the post's terms' term_ids, names and slugs. Terms given as integers will only be checked against the post's terms' term_ids.
If no terms are given, determines if post has any terms.
Uses: is_object_in_term()
1 time — 0.003337 sec (very slow) | 50000 times — 0.82 sec (very fast) | PHP 7.1.5, WP 4.8.1
No Hooks.
Return
true|false
. True if the current post has any of the given terms (or any term, if no term specified). False otherwise.
Usage
has_term( $term, $taxonomy, $post );
- $term(string|int|array)
- The term name/term_id/slug, or an array of them to check for.
Default: '' - $taxonomy(string)
- Taxonomy name.
Default: '' - $post(int|WP_Post)
- Post to check.
Default: current post
Examples
#1 Let's check if the current post has any terms in the 'video' taxonomy:
if( has_term( '', 'video' ) ){ echo "The post has terms in the `video` taxonomy"; }
#2 To properly understand the previous example, it can be written like this:
if( has_term( '', 'post_tag' ) ){ echo "The current post has tags"; }
So, we'll just check if the current post has the regular tags that WordPress uses by default (the terms in the post_tag taxonomy). You can replace this example with the conditional tag if( has_tags() )
.
#3 Let's check if the current post has a term triller
, which is in the taxonomy video
:
if( has_term( 'triller', 'video' ) ){ echo "The post has the term `triller` in the `video` taxonomy"; }
#4 Checking for multiple terms
Check whether post 59 is in the terms comedy
or history
, which belong to the taxonomy video
:
if( has_term( ['comedy','history'], 'video', 59 ) ){ echo "The post with ID=59 has the terms `comedy` or `history` in the `video` taxonomy"; }
Changelog
Since 3.1.0 | Introduced. |
has_term() has term code WP 6.7.1
function has_term( $term = '', $taxonomy = '', $post = null ) { $post = get_post( $post ); if ( ! $post ) { return false; } $r = is_object_in_term( $post->ID, $taxonomy, $term ); if ( is_wp_error( $r ) ) { return false; } return $r; }