WordPress как на ладони
wordpress jino

wp_update_term_count() WP 2.3.0

Обновляет количество записей в элементе таксономии (термине).

Для обновления количества записей, можно установить свою функцию. Название такой функции устанавливается в объекте таксономии в поле update_count_callback при регистрации таксономии с помощью register_taxonomy() или можно установить чуть позднее, изменив данные таксономии и установив называние функции в указанное поле.

По умолчанию для подсчета используются функции:

  • _update_post_term_count( $terms, $taxonomy ) - для записей, которые только что опубликованы и прикрепляются к термину.
  • _update_generic_term_count( $terms, $taxonomy ) - для других объектов (например, пользователь), которые прикрепляются к термину.

По умолчанию подсчитывается количество связей термина с записью, после подсчета данные обновляются в поле count таблицы wp_term_taxonomy.

Работает на основе: wp_update_term_count_now()

Хуков нет.

Возвращает

True/false. false, когда нет указанных терминов. true, когда удалось обновить значение поля.

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

wp_update_term_count( $terms, $taxonomy );
$terms(число/массив) (обязательный)
Число или массив чисел из поля term_taxonomy_id таблицы wp_term_relationships. C версии WP 4.4 оно должно совпадать с ID термина.
$taxonomy(строка) (обязательный)
Название таксономии, к которой принадлежат указанные в $terms числа.

Примеры

#1 Обновление количества записей в рубриках

Обновим кол. записей в рубриках 12 и 13, например когда была добавлена новая запись. Такое обновление делает функция wp_insert_post() через вызов wp_set_object_terms().

wp_update_term_count( array(12,13), 'category' );

Код wp update term count: wp-includes/taxonomy.php WP 4.8.2

<?php
function wp_update_term_count( $terms, $taxonomy, $do_deferred = false ) {
	static $_deferred = array();

	if ( $do_deferred ) {
		foreach ( (array) array_keys($_deferred) as $tax ) {
			wp_update_term_count_now( $_deferred[$tax], $tax );
			unset( $_deferred[$tax] );
		}
	}

	if ( empty($terms) )
		return false;

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

	if ( wp_defer_term_counting() ) {
		if ( !isset($_deferred[$taxonomy]) )
			$_deferred[$taxonomy] = array();
		$_deferred[$taxonomy] = array_unique( array_merge($_deferred[$taxonomy], $terms) );
		return true;
	}

	return wp_update_term_count_now( $terms, $taxonomy );
}

Cвязанные функции

Из метки: term (термины таксономий)

wp_update_term_count Комментариев нет

Здравствуйте, !

Ваш комментарий