has_term( string|int|array $term = '', string $taxonomy = '', int|WP_Post $post = null ): bool
Checks if the current post has any of given terms.
Description
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.
Parameters
-
$term
string|int|array Optional -
The term name/term_id/slug, or an array of them to check for.
Default:
''
-
$taxonomy
string Optional -
Taxonomy name.
Default:
''
-
$post
int|WP_Post Optional -
Post to check. Defaults to the current post.
Default:
null
Return
bool True if the current post has any of the given terms (or any term, if no term specified). False otherwise.
Source
File: wp-includes/category-template.php
.
View all references
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;
}
Changelog
Version | Description |
---|---|
3.1.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.
If you’re checking for the presence of any terms from a given taxonomy on a post, you can pass in an empty string as the first parameter.
Example
This is useful if you want to conditionally display some markup that applies only if terms have been added to a post.
Example
Example for check if a post of cpt have a specific term of a custom taxonomy.
In this example we check if the post have a term ‘action’ and in this case asign one css class to a variable that we use later on html.
CPT: “hook”
Taxonomy: “hook-type”
Taxonomy terms: “action” and “filter”.
Note that in this example, this code is inside a cpt archive file “archive-hook.php”.