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

Check if the current post has any of given terms.


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


Top ↑

Parameters Parameters

$term

(string|int|array) (Optional) The term name/term_id/slug or array of them to check for.

Default value: ''

$taxonomy

(string) (Optional) Taxonomy name.

Default value: ''

$post

(int|WP_Post) (Optional) Post to check instead of the current post.

Default value: null


Top ↑

Return Return

(bool) True if the current post has any of the given tags (or any tag, if no tag specified).


Top ↑

Source Source

File: wp-includes/category-template.php

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;
}


Top ↑

Changelog Changelog

Changelog
Version Description
3.1.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

  1. Skip to note 1 content
    Contributed by Marc Heatley

    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

    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 3 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";
    };
    

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