wp_update_term_count()
Обновляет/пересчитывает количество записей в элементе таксономии (термине).
Для обновления количества записей, можно установить свою функцию. Название такой функции устанавливается в объекте таксономии в поле 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() - она напрямую связана с этой функцией.
Хуков нет.
Возвращает
true|false
.
false
– когда нет указанных терминов.true
– когда удалось обновить значение поля.
Использование
wp_update_term_count( $terms, $taxonomy );
- $terms(число/массив) (обязательный)
- Число или массив чисел из поля
term_taxonomy_id
таблицыwp_term_relationships
. C версии WP 4.4 оно должно совпадать с ID термина. - $taxonomy(строка) (обязательный)
- Название таксономии, к которой принадлежат указанные в $terms числа.
- $do_deferred(true/false)
- Внутренний параметр. В обычной жизни не используется. Нужен для работы функции wp_defer_term_counting()
Примеры
#1 Обновление количества записей в рубриках
Обновим кол. записей в рубриках 12 и 13, например когда была добавлена новая запись. Такое обновление делает функция wp_insert_post() через вызов wp_set_object_terms().
wp_update_term_count( array(12,13), 'category' );
#2 Как пересчитать количество записей во всех элементах таксономии?
Чтобы обновить количество записей для всех терминов таксономии в WordPress, вы можете использовать функцию wp_update_term_count()
. Эта функция пересчитывает количество постов, связанных с каждым термином в указанной таксономии, и обновляет счетчик терминов для каждого термина в базе данных.
Вот пример того, как можно обновить количество постов для всех терминов в таксономии category
:
$taxonomy = 'category'; $terms = get_terms( [ 'taxonomy' => $taxonomy, 'hide_empty' => false, ] ); foreach ( $terms as $term ) { wp_update_term_count( $term->term_id, $taxonomy ); }
В этом примере мы сначала получаем все термины для указанной таксономии с помощью функции get_terms(). Затем перебираем все термины и обновляем количество постов в них.
Обратите внимание, что в зависимости от количества терминов и постов на вашем сайте, эта операция может занять некоторое время.
Список изменений
С версии 2.3.0 | Введена. |