Описание
Получает всю информацию об элементе таксономии по указанному полю и значению этого поля.
get_term_by() используется в: get_category_by_slug(), get_cat_ID().
Функция возвращает массив данных об элементе таксономии, если существует $taxonomy и комбинация значений переменных $field и $value. Если значение параметра $value не найдено, то функция вернет false.
Использование
<?php get_term_by( $field, $value, $taxonomy, $output, $filter ) ?>
Параметры
- $field
- Поле в БД, по которому будет производиться поиск параметра $value, может быть:
slug - по альтернативному названию;
name - по названию;
id - по идентификатору.
По умолчанию: нет - $value
- Значение которое нужно найти.
По умолчанию: нет - $taxonomy
- Название таксономии, category, post_tag или любое другое название произвольной таксономии.
По умолчанию: нет - $output
- Каким видом массива возвращать данные:
- OBJECT - объект;
- ARRAY_A - ассоциативный массив;
- ARRAY_N - индексированный массив.
По умолчанию: OBJECT
- $filter
- ???
По умолчанию: "raw"
(строка) (обязательный)
(строка/число) (обязательный)
(строка) (обязательный)
(строка)
(строка)
Возвращаемые значения
Функция вернет массив данных (объект) об элементе таксономии, массив будет содержать следующие данные:
- term_id
- name
- slug
- term_group
- term_taxonomy_id
- taxonomy
- description
- parent
- count
Примеры
1. Получим данные элемента таксономии "my_tax" ID которого равен 87:
$curent_post_term = get_term_by('id', 87, 'my_tax');
2. Получим данные элемента таксономии "my_tax" название которого равно "Моя Рубрика":
$curent_post_term = get_term_by('name', "Моя Рубрика", 'my_tax');
В результате обоих этих примеров переменная $curent_post_term будет содержать подобный объект (массив):
stdClass Object
(
[term_id] => 80
[name] => Моя Рубрика
[slug] => moya-rubrika
[term_group] => 0
[term_taxonomy_id] => 87
[taxonomy] => my_tax
[description] =>
[parent] => 0
[count] => 5
)
Если функции не удастся найти элемент таксономии по переданным ей данным, то она вернет массив-ошибку WP_error.
На заметку
- Важно: значение параметра $value не очищается, поэтому если это надо сделать при поиске по полю 'name' параметра $field, то это нужно делать "вручную".
- Использует: sanitize_term(). Чистит элемент на основе правил фильтра указанного в параметре $filter
get_term_by()
из файла: /wp-includes/taxonomy.php WP 3.3.2function get_term_by($field, $value, $taxonomy, $output = OBJECT, $filter = 'raw') {
global $wpdb;
if ( ! taxonomy_exists($taxonomy) )
return false;
if ( 'slug' == $field ) {
$field = 't.slug';
$value = sanitize_title($value);
if ( empty($value) )
return false;
} else if ( 'name' == $field ) {
// Assume already escaped
$value = stripslashes($value);
$field = 't.name';
} else {
$term = get_term( (int) $value, $taxonomy, $output, $filter);
if ( is_wp_error( $term ) )
$term = false;
return $term;
}
$term = $wpdb->get_row( $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 tt.taxonomy = %s AND $field = %s LIMIT 1", $taxonomy, $value) );
if ( !$term )
return false;
wp_cache_add($term->term_id, $term, $taxonomy);
$term = apply_filters('get_term', $term, $taxonomy);
$term = apply_filters("get_$taxonomy", $term, $taxonomy);
$term = sanitize_term($term, $taxonomy, $filter);
if ( $output == OBJECT ) {
return $term;
} elseif ( $output == ARRAY_A ) {
return get_object_vars($term);
} elseif ( $output == ARRAY_N ) {
return array_values(get_object_vars($term));
} else {
return $term;
}
}Связанные Функции
Ещё из раздела
Смотрите также: Функции WordPress и Теги Шаблона.