has_term

The timeline below displays how wordpress function has_term has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.1

/**
 * 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.
 *
 * @since 3.1.0
 *
 * @param string|int|array $term     Optional. The term name/term_id/slug,
 *                                   or an array of them to check for. Default empty.
 * @param string           $taxonomy Optional. Taxonomy name. Default empty.
 * @param int|WP_Post      $post     Optional. Post to check. Defaults to the current post.
 * @return 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;
}

WordPress Version: 5.5

/**
 * 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.
 *
 * @since 3.1.0
 *
 * @param string|int|array $term     Optional. The term name/term_id/slug,
 *                                   or an array of them to check for. Default empty.
 * @param string           $taxonomy Optional. Taxonomy name. Default empty.
 * @param int|WP_Post      $post     Optional. Post to check instead of the current post.
 * @return 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;
}

WordPress Version: 5.4

/**
 * 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.
 *
 * @since 3.1.0
 *
 * @param string|int|array $term     Optional. The term name/term_id/slug or array of them to check for.
 * @param string           $taxonomy Taxonomy name.
 * @param int|WP_Post      $post     Optional. Post to check instead of the current post.
 * @return bool True if the current post has any of the given tags (or any tag, if no tag specified).
 */
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;
}

WordPress Version: 3.7

/**
 * 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.
 *
 * @since 3.1.0
 *
 * @param string|int|array $term Optional. The term name/term_id/slug or array of them to check for.
 * @param string $taxonomy Taxonomy name
 * @param int|object $post Optional. Post to check instead of the current post.
 * @return bool True if the current post has any of the given tags (or any tag, if no tag specified).
 */
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;
}