wp_get_object_terms

Получает термины (элементы таксономии) связанные с переданным объектом(ами) (записями) в указанной таксономии.

Функция является ядром функции get_the_terms(). В большинстве случаев лучше использовать get_the_terms() вместо этой функции, так как там результат кэшируется.

✈ 1 раз = 0.02396с = тормоз | 50000 раз = 52.3с = очень медленно
Хуки из функции:
get_object_terms
wp_get_object_terms
Возвращает

Массив объектов содержащих информацию о терминах. При ошибке вернет объект WP_Error.

Использование

wp_get_object_terms( $object_ids, $taxonomies, $args );
$object_ids(строка/массив) (обязательный)
ID объекта(ов), термины которых нужно получить. Более одного ID нужно указывать в массиве: array(23, 56, 89).
По умолчанию: нет
$taxonomies(строка/массив) (обязательный)
Название таксономии термины которой нужно получить. Можно указать несколько названий. Несколько названий нужно передавать через массив: array(‘category’, ‘name2’).
По умолчанию: нет
$args(строка/массив)

Аргументы, в соответствии с которыми будет получен результат. Можно указывать в виде строки запроса.
По умолчанию: предустановки

  • orderby (строка)
    По какому критерию сортировать результат. Может быть:

    • count – по количеству записей;
    • name – по имени. По умолчанию;
    • slug – по ярлыку;
    • none – выводить без сортировки.

    По умолчанию: ‘name’

  • order (строка)
    Направление сортировки. ASC — по порядку, DESC — в обратном порядке.
    По умолчанию: ‘ASC’

  • fields (строка)
    Какие поля включать в результирующий массив. Может быть:

    • all – в результате мы получи массив объектов со всей информацией о каждом термине;
    • all_with_object_id – тоже что и all, плюс еще и ID терминов;
    • ids – получить только ID терминов;
    • names – получить только имена терминов.

    По умолчанию: ‘all’

  • meta_query (массив)
    Параметры мета запроса. Смотрите WP_Meta_Query{}. С версии 4.4.

  • update_term_meta_cache (логический)
    Нужно ли перезагрузить/обновить кэш указанных элементов таксономии.
    Работает только когда параметр $fields равен all, all_with_object_id или term_id. С версии 4.4.
    По умолчанию: ‘true’

Примеры

#1. Получим все элементы таксономии productcategories, к которым относится текущий пост ($post->ID):

$productcategories = wp_get_object_terms($post->ID, 'productcategories');

#2. Вернет список элементов таксономии “product”, которые установлены для записи:

$product_terms = wp_get_object_terms($post->ID, 'product');
if( ! empty($product_terms)){
	if( ! is_wp_error($product_terms) ){
		echo '<ul>';
		foreach( $product_terms as $term ){
			echo '<li><a href="'. get_term_link($term) .'">'. $term->name .'</a></li>'; 
		}
		echo '</ul>';
	}
}

#3. Получает самый верхний элемент таксономии для указанного или текущего поста в цикле

Смотрите в третьем примере в описании функции get_the_terms()

Код из


wp-includes/taxonomy.php

WP 4.7.2

<?php
function wp_get_object_terms($object_ids, $taxonomies, $args = array()) {
	global $wpdb;

	if ( empty( $object_ids ) || empty( $taxonomies ) )
		return array();

	if ( !is_array($taxonomies) )
		$taxonomies = array($taxonomies);

	foreach ( $taxonomies as $taxonomy ) {
		if ( ! taxonomy_exists($taxonomy) )
			return new WP_Error( 'invalid_taxonomy', __( 'Invalid taxonomy.' ) );
	}

	if ( !is_array($object_ids) )
		$object_ids = array($object_ids);
	$object_ids = array_map('intval', $object_ids);

	$args = wp_parse_args( $args );

	$args['taxonomy'] = $taxonomies;
	$args['object_ids'] = $object_ids;

	$terms = get_terms( $args );

	/**
	 * Filters the terms for a given object or objects.
	 *
	 * @since 4.2.0
	 *
	 * @param array $terms      An array of terms for the given object or objects.
	 * @param array $object_ids Array of object IDs for which `$terms` were retrieved.
	 * @param array $taxonomies Array of taxonomies from which `$terms` were retrieved.
	 * @param array $args       An array of arguments for retrieving terms for the given
	 *                          object(s). See wp_get_object_terms() for details.
	 */
	$terms = apply_filters( 'get_object_terms', $terms, $object_ids, $taxonomies, $args );

	$object_ids = implode( ',', $object_ids );
	$taxonomies = implode( ',', $taxonomies );

	/**
	 * Filters the terms for a given object or objects.
	 *
	 * The `$taxonomies` parameter passed to this filter is formatted as a SQL fragment. The
	 * {@see 'get_object_terms'} filter is recommended as an alternative.
	 *
	 * @since 2.8.0
	 *
	 * @param array     $terms      An array of terms for the given object or objects.
	 * @param int|array $object_ids Object ID or array of IDs.
	 * @param string    $taxonomies SQL-formatted (comma-separated and quoted) list of taxonomy names.
	 * @param array     $args       An array of arguments for retrieving terms for the given object(s).
	 *                              See wp_get_object_terms() for details.
	 */
	return apply_filters( 'wp_get_object_terms', $terms, $object_ids, $taxonomies, $args );
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *