wp-includes/user.php:661Gets the number of posts written by a list of users.
$usersint[]$post_typestring|string[]optional'post'$public_onlybooloptionalfalsearray<int,One hook fires while count_many_users_posts() runs, in this order:
Filters whether to short-circuit performing the post counts.
function count_many_users_posts( $users, $post_type = 'post', $public_only = false ) { global $wpdb; if ( empty( $users ) || ! is_array( $users ) ) { return array(); } /** * Filters whether to short-circuit performing the post counts. * * When filtering, return an array of posts counts as strings, keyed * by the user ID. * * @since 6.8.0 * * @param string[]|null $count The post counts. Return a non-null value to short-circuit. * @param int[] $users Array of user IDs. * @param string|string[] $post_type Single post type or array of post types to check. * @param bool $public_only Whether to only return counts for public posts. */ $pre = apply_filters( 'pre_count_many_users_posts', null, $users, $post_type, $public_only ); if ( null !== $pre ) { return $pre; } // Cleanup the users array. Remove duplicates and sort for consistent ordering. $users = array_unique( array_filter( array_map( 'intval', $users ) ) ); sort( $users ); // Cleanup the post type argument. Remove duplicates and sort for consistent ordering. $post_type = array_unique( (array) $post_type ); sort( $post_type ); $userlist = implode( ',', $users ); $where = get_posts_by_author_sql( $post_type, true, null, $public_only ); $query = "SELECT post_author, COUNT(*) FROM $wpdb->posts $where AND post_author IN ($userlist) GROUP BY post_author"; $cache_key = 'count_many_users_posts:' . md5( $query ); $cache_salts = array( wp_cache_get_last_changed( 'posts' ), wp_cache_get_last_changed( 'users' ) ); $count = wp_cache_get_salted( $cache_key, 'post-queries', $cache_salts ); if ( false === $count ) { $result = $wpdb->get_results( $query, ARRAY_N ); $count = array_fill_keys( $users, 0 ); foreach ( $result as $row ) { $count[ $row[0] ] = $row[1]; } wp_cache_set_salted( $cache_key, $count, 'post-queries', $cache_salts, HOUR_IN_SECONDS ); } return $count;}Introduced in 3.0.0. One change between 6.7.7 and 7.1.0.
Signature, return type and hooks compared across 5 parsed releases.
string[] to array<int,.verified against sourcesrc/wp-includes/user.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.