update_post_term_count_statusesхук-фильтрWP 5.7.0

Позволяет изменить список статусов записей, учитываемых при обновлении счётчика кол-ва терминов в таксономии.

Этот фильтр применяется в процессе обновления количества записей, связанных с термином (например, категориями или метками). По умолчанию учитываются только записи со статусом publish.

Используя этот фильтр, можно включить в подсчёт и другие статусы: draft, pending, private и пользовательские статусы.

Важно: После изменения логики подсчёта записей в термине с помощью этого фильтра, необходимо вручную инициировать обновление счётчиков терминов.

Это можно сделать, например, с помощью функции wp_update_term_count_now(), передав ей список терминов и таксономию.

Обычно счетчик обновляется при обновлении поста, для термина к которому првязан обновляемый пост.

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

add_filter( 'update_post_term_count_statuses', 'wp_kama_update_post_term_count_statuses_filter', 10, 2 );

/**
 * Function for `update_post_term_count_statuses` filter-hook.
 * 
 * @param string[]    $post_statuses List of post statuses to include in the count.
 * @param WP_Taxonomy $taxonomy      Current taxonomy object.
 *
 * @return string[]
 */
function wp_kama_update_post_term_count_statuses_filter( $post_statuses, $taxonomy ){

	// filter...
	return $post_statuses;
}
$post_statuses(string[])
Список статусов записей, которые будут учитываться при подсчёте.
По умолчанию: ['publish']
$taxonomy(WP_Taxonomy)
Объект текущей таксономии, для которой обновляется счётчик терминов.

Примеры

0

#1 Учитывать пользовательский статус archived для таксономии genre

Добавим в подсчёт кол-ва записей в терминах записи с пользовательским статусом archived для таксономии genre.

add_filter( 'update_post_term_count_statuses', 'my_post_term_count_add_archived_status', 10, 2 );
/**
 * @param string[]    $statuses List of post statuses to include in the count.
 * @param WP_Taxonomy $taxonomy Current taxonomy object.
 *
 * @return string[]
 */
function my_post_term_count_add_archived_status( $statuses, $taxonomy ) {
	if ( $taxonomy->name === 'genre' ) {
		$statuses[] = 'archived';
	}

	return $statuses;
}
0

#2 Учитывать все статусы записей при подсчёте кол-ва записей в термине

Если необходимо учитывать все возможные статусы записей при подсчёте кол-ва записей в термине, можно использовать следующий код:

add_filter( 'update_post_term_count_statuses', 'my_include_all_statuses', 10, 2 );
/**
 * @param string[]    $statuses List of post statuses to include in the count.
 * @param WP_Taxonomy $taxonomy Current taxonomy object.
 *
 * @return string[]
 */
function my_include_all_statuses( $statuses, $taxonomy ) {
	$all_statuses = get_post_stati( [], 'names' );

	return $all_statuses;
}
-1

#3 Учитывать черновики и приватные записи при подсчёте кол-ва постов в категориях

Добавим в подсчёт кол-ва записей в категориях записи со статусами draft и private:

add_filter( 'update_post_term_count_statuses', 'category_up_term_count_statuses', 10, 2 );
/**
 * @param string[]    $statuses List of post statuses to include in the count.
 * @param WP_Taxonomy $taxonomy Current taxonomy object.
 *
 * @return string[]
 */
function category_up_term_count_statuses( $statuses, $taxonomy ) {
	if ( $taxonomy->name === 'category' ) {
		$statuses[] = 'draft';
		$statuses[] = 'private';
	}

	return $statuses;
}

Список изменений

С версии 5.7.0 Введена.

Где вызывается хук

_update_post_term_count()
update_post_term_count_statuses
_update_term_count_on_transition_post_status()
update_post_term_count_statuses
wp-includes/taxonomy.php 4178
$post_statuses = esc_sql( apply_filters( 'update_post_term_count_statuses', $post_statuses, $taxonomy ) );
wp-includes/post.php 8231
$counted_statuses = apply_filters( 'update_post_term_count_statuses', array( 'publish' ), $taxonomy );

Где используется хук в WordPress

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