has_term( string|int|array $term = '', string $taxonomy = '', int|object $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.

Parameters Parameters


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

Default value: ''


(string) (Optional) Taxonomy name

Default value: ''


(int|object) (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

Version Description
3.1.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

  1. Skip to note 2 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.


    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.

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