Uma área de pesquisa sobre o WordPress para devs e autores do tema



term_exists ›

Desde3.0.0
Obsoleton/a
term_exists ( $term, $taxonomy = '', $parent = null )
Parâmetros: (3)
  • (int|string) $term The term to check. Accepts term ID, slug, or name.
    Required: Yes
  • (string) $taxonomy The taxonomy name to use
    Required: No
    Padrão: (empty)
  • (int) $parent Optional. ID of parent term under which to confine the exists search.
    Required: No
    Padrão: null
Retorna:
  • (mixed) Returns null if the term does not exist. Returns the term ID if no taxonomy is specified and the term ID exists. Returns an array of the term ID and the term taxonomy ID if the taxonomy is specified and the pairing exists.
Definido em:
Codex:

Determines whether a term exists.

Formerly is_term(), introduced in 2.3.0.

For more information on this and similar theme functions, check out the {@link https://developer.wordpress.org/themes/basics/conditional-tags/ Conditional Tags} article in the Theme Developer Handbook.



Fonte

function term_exists( $term, $taxonomy = '', $parent = null ) {
	global $wpdb;

	$select     = "SELECT term_id FROM $wpdb->terms as t WHERE ";
	$tax_select = "SELECT tt.term_id, tt.term_taxonomy_id FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy as tt ON tt.term_id = t.term_id WHERE ";

	if ( is_int( $term ) ) {
		if ( 0 == $term ) {
			return 0;
		}
		$where = 't.term_id = %d';
		if ( ! empty( $taxonomy ) ) {
			return $wpdb->get_row( $wpdb->prepare( $tax_select . $where . ' AND tt.taxonomy = %s', $term, $taxonomy ), ARRAY_A );
		} else {
			return $wpdb->get_var( $wpdb->prepare( $select . $where, $term ) );
		}
	}

	$term = trim( wp_unslash( $term ) );
	$slug = sanitize_title( $term );

	$where             = 't.slug = %s';
	$else_where        = 't.name = %s';
	$where_fields      = array( $slug );
	$else_where_fields = array( $term );
	$orderby           = 'ORDER BY t.term_id ASC';
	$limit             = 'LIMIT 1';
	if ( ! empty( $taxonomy ) ) {
		if ( is_numeric( $parent ) ) {
			$parent              = (int) $parent;
			$where_fields[]      = $parent;
			$else_where_fields[] = $parent;
			$where              .= ' AND tt.parent = %d';
			$else_where         .= ' AND tt.parent = %d';
		}

		$where_fields[]      = $taxonomy;
		$else_where_fields[] = $taxonomy;

		if ( $result = $wpdb->get_row( $wpdb->prepare( "SELECT tt.term_id, tt.term_taxonomy_id FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy as tt ON tt.term_id = t.term_id WHERE $where AND tt.taxonomy = %s $orderby $limit", $where_fields ), ARRAY_A ) ) {
			return $result;
		}

		return $wpdb->get_row( $wpdb->prepare( "SELECT tt.term_id, tt.term_taxonomy_id FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy as tt ON tt.term_id = t.term_id WHERE $else_where AND tt.taxonomy = %s $orderby $limit", $else_where_fields ), ARRAY_A );
	}

	if ( $result = $wpdb->get_var( $wpdb->prepare( "SELECT term_id FROM $wpdb->terms as t WHERE $where $orderby $limit", $where_fields ) ) ) {
		return $result;
	}

	return $wpdb->get_var( $wpdb->prepare( "SELECT term_id FROM $wpdb->terms as t WHERE $else_where $orderby $limit", $else_where_fields ) );
}