get_term() WP 2.3.0

Отримує дані про елемент таксономії (термін) за переданим ID.

У функції є два хуки:

  1. get_term – спрацьовує завжди.
  2. get_(taxonomy) – спрацьовує для певного елемента таксономії.

Обидва хуки як параметри отримують об’єкт (масив) елемента і назву таксономії. Обидва хуки повинні повернути об’єкт (масив) елемента.

Другий term_(taxonomy)динамічний хук, тобто. у ньому (taxonomy) має бути замінено назву таксономії. Наприклад для категорій, назва таксономії у яких “category”, назва фільтра буде такою: “get_category”. Може стати в нагоді для довільних таксономій.

Щоб отримати термін по полю: name або slug , використовуйте get_term_by() .

Функція кешує результат і при повторному отриманні того ж терміну, запиту до БД не відбуватися – результат просто повертається з кешу.

Функція ідентична get_category() , тільки в цій функції можна вказати назву таксономії, з якою працювати.

Використовує: sanitize_term() . Чистить елемент на основі правил фільтра, вказаного у параметрі $filter .

Працює на основі:
WP_Term()
1 раз – 0.000125 сек
(швидко) | 50000 разів – 0.42 сек
(дуже швидко) |
PHP 7.1.2, WP 4.7.3

Хуки з функції

Повертає

WP_Term|Массив|WP_Error|null.

  • WP_Term(об’єкт терміна) — коли термін знайдено $output = OBJECT (за замовчуванням).
  • Массив— коли термін знайдено $output = ARRAY_A або $output = ARRAY_N .
  • null– Коли термін не знайдено.
  • WP_Error(Об’єкт) – коли таксономії не існує.

Використання

$term = get_term($term, $taxonomy, $output, $filter);
$term
(число/об’єкт) (обов’язковий)
Якщо передано ID, дані будуть отримані з БД. Якщо переданий об’єкт, то будуть застосовані фільтри та повернуто переданий об’єкт.
$taxonomy
(рядок)
Назва таксономії, до якої належить елемент
$term .

З версії 4.4. параметр став необов’язковим.


За замовчуванням: ”
$output
(рядок)

Яким видом масиву повертати дані:

  • OBJECT – об’єкт.
  • ARRAY_A – асоціативний масив.
  • ARRAY_N – індексований масив.

Типово: OBJECT

$filter
(рядок)
Як очищати поля масиву перед поверненням.


За замовчуванням: ‘raw’

Приклади

0

#1 Отримаємо дані про елемент таксономії з БД:

$ term_id = 65;
$taxonomy = 'my_taxonomy'; // З версії 4.4. параметр став необов'язковим.
$ term = get_term ($ term_id, $ taxonomy);
// Тепер змінна містить дані про елемент таксономії.

// Альтернативна назва елемента знаходиться тут
$ slug = $ term-> slug;

// Назва елемента
$name = $term->name;

// А так ми отримаємо опис елемента таксономії
$desc = $term->description;
0

#2 Отримання елемента таксономії без зазначення таксономії

З версії 4.4. стало можливим не вказувати параметр $taxonomy :

$ term = get_term (562);
print_r($term);

/* Виведе:
WP_Term Object
(
	[term_id] => 562
	[name] => Записи
	[slug] => zapisi
	[term_group] => 0
	[term_taxonomy_id] => 582
	[taxonomy] => my_taxonomy_name
	[description] =>
	[parent] => 0
	[count] => 1
	[filter] => raw
)
*/

нотатки

  • Дивіться: () $filter param.

список змін

З версії 2.3.0Введено.
З версії 4.4.0Перевірено на обернути WP_Term object if $output is OBJECT . The $taxonomy parameter був зроблений optional.

Код get_term() WP 6.0.2

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 ) ) {
		return new WP_Error( 'invalid_taxonomy', __( 'Invalid 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;
	}

	// Ensure for filters that this is not empty.
	$taxonomy = $_term->taxonomy;

	/**
	 * Filters a taxonomy term object.
	 *
	 * The {@see 'get_$taxonomy'} hook is also available for targeting a specific
	 * taxonomy.
	 *
	 * @ Since 2.3.0
	 * @since 4.4.0 `$_term` is now a `WP_Term` об'єкт.
	 *
	 * @param WP_Term $_term Term об'єкт.
	 * @param string $taxonomy The taxonomy slug.
	 */
	$_term = apply_filters( 'get_term', $_term, $taxonomy);

	/**
	 * Filters a taxonomy term object.
	 *
	 * The dynamic portion of hook name, `$taxonomy`, refers
	 * до віру в терм'ю taxonomy.
	 *
	 * Possible hook names include:
	 *
	 * - `get_category`
	 * - `get_post_tag`
	 *
	 * @ Since 2.3.0
	 * @since 4.4.0 `$_term` is now a `WP_Term` об'єкт.
	 *
	 * @param WP_Term $_term Term об'єкт.
	 * @param string $taxonomy The taxonomy slug.
	 */
	$_term = apply_filters( "get_{$taxonomy}", $_term, $taxonomy);

	// Bail if a filter callback has changed the type of '$_term' object.
	if (! ($_term instanceof WP_Term)) {
		return $_term;
	}

	// Sanitize term, в залежності від спеціального filtrа.
	$_term->filter($filter);

	if ( ARRAY_A === $output ) {
		return $_term->to_array();
	} elseif ( ARRAY_N === $output ) {
		return array_values( $_term->to_array() );
	}

	return $_term;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *