将根据当前分类的对象类型更新术语计数。

原型

_update_post_term_count( array $terms, object $taxonomy )

描述

用于post_tag和类别分类的默认回调的私有函数。

参数

$terms (array) (Required) 术语分类标识列表。

$taxonomy (object) (Required) 当前的分类对象的术语。

源文件

路径:wp-includes/taxonomy.php

<?php
...
function _update_post_term_count( $terms, $taxonomy ) {
	global $wpdb;
	$object_types = (array) $taxonomy->object_type;
	foreach ( $object_types as &$object_type )
		list( $object_type ) = explode( ':', $object_type );
	$object_types = array_unique( $object_types );
	if ( false !== ( $check_attachments = array_search( 'attachment', $object_types ) ) ) {
		unset( $object_types[ $check_attachments ] );
		$check_attachments = true;
	}
	if ( $object_types )
		$object_types = esc_sql( array_filter( $object_types, 'post_type_exists' ) );
	foreach ( (array) $terms as $term ) {
		$count = 0;
		// Attachments can be 'inherit' status, we need to base count off the parent's status if so.
		if ( $check_attachments )
			$count += (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_relationships, $wpdb->posts p1 WHERE p1.ID = $wpdb->term_relationships.object_id AND ( post_status = 'publish' OR ( post_status = 'inherit' AND post_parent > 0 AND ( SELECT post_status FROM $wpdb->posts WHERE ID = p1.post_parent ) = 'publish' ) ) AND post_type = 'attachment' AND term_taxonomy_id = %d", $term ) );
		if ( $object_types )
			$count += (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_relationships, $wpdb->posts WHERE $wpdb->posts.ID = $wpdb->term_relationships.object_id AND post_status = 'publish' AND post_type IN ('" . implode("', '", $object_types ) . "') AND term_taxonomy_id = %d", $term ) );
		/** This action is documented in wp-includes/taxonomy.php */
		do_action( 'edit_term_taxonomy', $term, $taxonomy->name );
		$wpdb->update( $wpdb->term_taxonomy, compact( 'count' ), array( 'term_taxonomy_id' => $term ) );
		/** This action is documented in wp-includes/taxonomy.php */
		do_action( 'edited_term_taxonomy', $term, $taxonomy->name );
	}
}
...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/_update_post_term_count/