Описание
Проверяет существует ли указанный элемент таксономии (раздел), если "да", возвращает ID или массив идентификаторов этого элемента.
Функция возвращает ID элемента таксономии или массив данных, если термин найден, в противном случае возвращается 0 (false).
Если параметр $taxonomy не указан, то функция вернет ID термина, если указать то будет возвращен массив в таком формате:
array('term_id'=>term id, 'term_taxonomy_id'=>taxonomy id)
Использование
<?php term_exists( $term, $taxonomy, $parent ) ?>
Параметры
- $term (строка/число) (обязательный)
- Элемент, который нужно проверить. Можно указывать название, альтернативное название или ID.
По умолчанию: нет - $taxonomy (строка
- Название таксономии с которой будет работать функция. Указывать не обязательно.
По умолчанию: '' - $parent (строка/число
- ID родительского раздела, под которым предполагается искать указанный элемент таксономии.
По умолчанию: ''
Примеры
1. Различные примеры использования функции:
$term = term_exists( 'miscellaneous' ); // вернет ID раздела со slug-ом 'miscellaneous' $term = term_exists( 'Мужская одежда' ); // вернет ID раздела с названием 'Мужская одежда'
2. Варианты с указанием таксономии:
$term = term_exists( 'Мужская одежда', 'my_tax' ); // Вернет массив // [term_id] => 80 // [term_taxonomy_id] => 84 // ID элемента таксономии echo $term['term_id']; // ID элемента таксономии в структуре таксономий echo $term['term_taxonomy_id'];
На заметку
- Использует: $wpdb
term_exists()
из файла: /wp-includes/taxonomy.php WP 3.3.2function term_exists($term, $taxonomy = '', $parent = 0) {
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( stripslashes( $term ) );
if ( '' === $slug = sanitize_title($term) )
return 0;
$where = 't.slug = %s';
$else_where = 't.name = %s';
$where_fields = array($slug);
$else_where_fields = array($term);
if ( !empty($taxonomy) ) {
$parent = (int) $parent;
if ( $parent > 0 ) {
$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", $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", $else_where_fields), ARRAY_A);
}
if ( $result = $wpdb->get_var( $wpdb->prepare("SELECT term_id FROM $wpdb->terms as t WHERE $where", $where_fields) ) )
return $result;
return $wpdb->get_var( $wpdb->prepare("SELECT term_id FROM $wpdb->terms as t WHERE $else_where", $else_where_fields) );
}Ещё из раздела
Смотрите также: Функции WordPress и Теги Шаблона.
