count_many_users_posts
Number of posts written by a list of users.
Description
(array) count_many_users_posts( (array) $users, (string) $post_type = 'post', (bool) $public_only = false );
Returns (array)
Amount of posts each user has written.
Parameters (3)
- 0. $users (array)
- Array of user IDs.
- 1. $post_type — Optional. (string) =>
'post'
- Single post type or array of post types to check. Defaults to post..
- 2. $public_only — Optional. (bool) =>
false
- Only return counts for public posts. Defaults to false.
Usage
if ( !function_exists( 'count_many_users_posts' ) ) { require_once ABSPATH . WPINC . '/user.php'; } // Array of user IDs. $users = array(); // Optional. Single post type or array of post types to check. Defaults to 'post'. $post_type = 'post'; // Optional. Only return counts for public posts. Defaults to false. $public_only = false; // NOTICE! Understand what this does before running. $result = count_many_users_posts($users, $post_type, $public_only);
Defined (1)
The function is defined in the following location(s).
- /wp-includes/user.php
- function count_many_users_posts( $users, $post_type = 'post', $public_only = false ) {
- global $wpdb;
- $count = array();
- if ( empty( $users ) || ! is_array( $users ) )
- return $count;
- $userlist = implode( ', ', array_map( 'absint', $users ) );
- $where = get_posts_by_author_sql( $post_type, true, null, $public_only );
- $result = $wpdb->get_results( "SELECT post_author, COUNT(*) FROM $wpdb->posts $where AND post_author IN ($userlist) GROUP BY post_author", ARRAY_N );
- foreach ( $result as $row ) {
- $count[ $row[0] ] = $row[1];
- }
- foreach ( $users as $id ) {
- if ( ! isset( $count[ $id ] ) )
- $count[ $id ] = 0;
- }
- return $count;
- }