has_term( string|int|array $term = , string $taxonomy = , int|WP_Post $post = null ): bool

Checks 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.


The term name/term_id/slug, or an array of them to check for.


Taxonomy name.


Post to check. Defaults to the current post.



bool True if the current post has any of the given terms (or any term, if no term specified). False otherwise.


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;



User Contributed Notes

  1. Skip to note 6 content

    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.


    if( has_term('', 'genre') ){
    	// do something

    This is useful if you want to conditionally display some markup that applies only if terms have been added to a post.

  2. Skip to note 8 content

    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”.

    $hook_css_class = '';
    if (has_term( 'action', 'hook-type' )) {
      $hook_css_class = "is-action-hook";
    } else {
      $hook_css_class = "is-filter-hook";
  3. Skip to note 9 content

    The has_term function in WordPress is used to check if a post has a specific term (category, tag, or custom taxonomy term). Here’s an example:

    // Specify the term and taxonomy you want to check
    $term = 'wpdocs_term'; // Replace with the actual term slug or name
    $taxonomy = 'wpdocs_category'; // Replace with the actual taxonomy name
    // Specify the post ID you want to check
    $post_id = 1; // Replace with the actual post ID
    // Use has_term to check if the post has the specified term
    if ( has_term( $term, $taxonomy, $post_id ) ) {
        // The post has the specified term
        echo 'Post has the term ' . $term . ' in the ' . $taxonomy . ' taxonomy.';
    } else {
        // The post does not have the specified term
        echo 'Post does not have the term ' . $term . ' in the ' . $taxonomy . ' taxonomy.';

You must log in before being able to contribute a note or feedback.