WordPress Version: 6.4
/**
* Determines whether a taxonomy 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.
*
* @since 3.0.0
* @since 6.0.0 Converted to use `get_terms()`.
*
* @global bool $_wp_suspend_cache_invalidation
*
* @param int|string $term The term to check. Accepts term ID, slug, or name.
* @param string $taxonomy Optional. The taxonomy name to use.
* @param int $parent_term Optional. ID of parent term under which to confine the exists search.
* @return 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.
* Returns 0 if term ID 0 is passed to the function.
*/
function term_exists($term, $taxonomy = '', $parent_term = null)
{
global $_wp_suspend_cache_invalidation;
if (null === $term) {
return null;
}
$defaults = array('get' => 'all', 'fields' => 'ids', 'number' => 1, 'update_term_meta_cache' => false, 'order' => 'ASC', 'orderby' => 'term_id', 'suppress_filter' => true);
// Ensure that while importing, queries are not cached.
if (!empty($_wp_suspend_cache_invalidation)) {
$defaults['cache_results'] = false;
}
if (!empty($taxonomy)) {
$defaults['taxonomy'] = $taxonomy;
$defaults['fields'] = 'all';
}
/**
* Filters default query arguments for checking if a term exists.
*
* @since 6.0.0
*
* @param array $defaults An array of arguments passed to get_terms().
* @param int|string $term The term to check. Accepts term ID, slug, or name.
* @param string $taxonomy The taxonomy name to use. An empty string indicates
* the search is against all taxonomies.
* @param int|null $parent_term ID of parent term under which to confine the exists search.
* Null indicates the search is unconfined.
*/
$defaults = apply_filters('term_exists_default_query_args', $defaults, $term, $taxonomy, $parent_term);
if (is_int($term)) {
if (0 === $term) {
return 0;
}
$args = wp_parse_args(array('include' => array($term)), $defaults);
$terms = get_terms($args);
} else {
$term = trim(wp_unslash($term));
if ('' === $term) {
return null;
}
if (!empty($taxonomy) && is_numeric($parent_term)) {
$defaults['parent'] = (int) $parent_term;
}
$args = wp_parse_args(array('slug' => sanitize_title($term)), $defaults);
$terms = get_terms($args);
if (empty($terms) || is_wp_error($terms)) {
$args = wp_parse_args(array('name' => $term), $defaults);
$terms = get_terms($args);
}
}
if (empty($terms) || is_wp_error($terms)) {
return null;
}
$_term = array_shift($terms);
if (!empty($taxonomy)) {
return array('term_id' => (string) $_term->term_id, 'term_taxonomy_id' => (string) $_term->term_taxonomy_id);
}
return (string) $_term;
}