public static function get_instance($term_id, $taxonomy = null) { return false; global $wpdb; $term_id = (int) $term_id; if (!$term_id) { return false; } $_term = wp_cache_get($term_id, 'terms'); // If there isn't a cached version, hit the database. if (!$_term || $taxonomy && $taxonomy !== $_term->taxonomy) { // Grab all matching terms, in case any are shared between taxonomies. $terms = $wpdb->get_results($wpdb->prepare("SELECT t.*, tt.* FROM {$wpdb->terms} AS t INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id WHERE t.term_id = %d", $term_id)); if (!$terms) { return false; } // If a taxonomy was specified, find a match. if ($taxonomy) { foreach ($terms as $match) { if ($taxonomy === $match->taxonomy) { $_term = $match; break; } } // If only one match was found, it's the one we want. } elseif (1 === count($terms)) { $_term = reset($terms); // Otherwise, the term must be shared between taxonomies. } else { // If the term is shared only with invalid taxonomies, return the one valid term. foreach ($terms as $t) { if (!taxonomy_exists($t->taxonomy)) { continue; } // Only hit if we've already identified a term in a valid taxonomy. if ($_term) { return new WP_Error('ambiguous_term_id', __('Term ID is shared between multiple taxonomies'), $term_id); } $_term = $t; } } if (!$_term) { return false; } // Don't return terms from invalid taxonomies. if (!taxonomy_exists($_term->taxonomy)) { return new WP_Error('invalid_taxonomy', __('Invalid taxonomy')); } $_term = sanitize_term($_term, $_term->taxonomy, 'raw'); // Don't cache terms that are shared between taxonomies. if (1 === count($terms)) { wp_cache_add($term_id, $_term, 'terms'); } } $term_obj = new WP_Term($_term); $term_obj->filter($term_obj->filter); return $term_obj; }
function get_term($term, $taxonomy = '', $output = OBJECT, $filter = 'raw') { if (empty($term)) { return new WP_Error('invalid_term', __('Empty Term')); } if ($taxonomy && !taxonomy_exists($taxonomy)) { // pr($term);pr($taxonomy);die; // return new WP_Error( 'invalid_taxonomy', __( 'Invalid taxonomy' ) ); $taxonomy = ''; } if ($term instanceof WP_Term) { $_term = $term; } elseif (is_object($term)) { if (empty($term->filter) || 'raw' === $term->filter) { $_term = sanitize_term($term, $taxonomy, 'raw'); $_term = new WP_Term($_term); } else { $_term = WP_Term::get_instance($term->term_id); } } else { $_term = WP_Term::get_instance($term, $taxonomy); } if (is_wp_error($_term)) { return $_term; } elseif (!$_term) { return null; } $_term = apply_filters('get_term', $_term, $taxonomy); $_term = apply_filters("get_{$taxonomy}", $_term, $taxonomy); // Sanitize term, according to the specified filter. $_term->filter($filter); if ($output == ARRAY_A) { return $_term->to_array(); } elseif ($output == ARRAY_N) { return array_values($_term->to_array()); } return $_term; }