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_defer_term_counting() – вона безпосередньо пов’язана з цією функцією.

Працює на основі:
wp_update_term_count_now()

Хуків немає.

Повертає

true|false.

  • false– коли немає зазначених термінів.
  • true– коли вдалося поновити значення поля.

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

wp_update_term_count($terms, $taxonomy);
$terms
(число/масив) (обов’язковий)
Число чи масив чисел із поля
term_taxonomy_idтаблиці
wp_term_relationships. З версії WP 4.4 воно має збігатися з ID терміном.
$taxonomy
(рядок) (обов’язковий)
Назва таксономії, до якої належать вказані у
$terms числа.
$do_deferred
(true/false)
Внутрішній параметр. У звичайному житті не використовується. Потрібен для роботи функції
wp_defer_term_counting()

Приклади

0

#1 Оновлення кількості записів у рубриках

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

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

список змін

З версії 2.3.0Введено.

Код wp_update_term_count() WP 6.0.2

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);
}

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

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