Current File : /home/kelaby89/teamhachem.com/wp-content/plugins/the-events-calendar/common/src/Tribe/Terms.php |
<?php
class Tribe__Terms {
/**
* Translates an array or list of `term_id`s or `slug`s to an array of `term_id`s; if a term is missing and specified by `slug` it
* will be created.
*
* @param array|string $terms An array or comma separated list of term `term_id` or `slug` or a single `term_id` or `slug`.
* @param string $taxonomy The taxonomy to translate the terms to.
* @param bool $create_missing Whether terms that could not be found by `term_id` or `slug` should be created or not.
*
* @return array An array containing the `term_id`s of the created terms.
*/
public static function translate_terms_to_ids( $terms, $taxonomy, $create_missing = true ) {
$terms = is_string( $terms ) ? preg_split( '/\\s*,\\s*/', $terms ) : (array) $terms;
$term_ids = [];
foreach ( $terms as $term ) {
if ( ! $term instanceof WP_Term && ! strlen( trim( $term ) ) ) {
continue;
}
if ( $term instanceof WP_Term ) {
$term_info = $term->to_array();
} elseif ( is_numeric( $term ) ) {
$term = absint( $term );
$term_info = get_term( $term, $taxonomy, ARRAY_A );
} else {
$term_info = term_exists( $term, $taxonomy );
}
if ( ! $term_info ) {
// Skip if a non-existent term ID is passed.
if ( is_numeric( $term ) ) {
continue;
}
if ( true == $create_missing ) {
$term_info = wp_insert_term( $term, $taxonomy );
} else {
continue;
}
}
if ( is_wp_error( $term_info ) ) {
continue;
}
$term_ids[] = $term_info['term_id'];
}
return array_unique( $term_ids );
}
}