- $post_id = (int) $post_id;
- $pending = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = $post_id AND comment_approved = '0'" );
- return $pending;
+
+ $single = false;
+ if ( !is_array($post_id) ) {
+ $post_id_array = (array) $post_id;
+ $single = true;
+ } else {
+ $post_id_array = $post_id;
+ }
+ $post_id_array = array_map('intval', $post_id_array);
+ $post_id_in = "'" . implode("', '", $post_id_array) . "'";
+
+ $pending = $wpdb->get_results( "SELECT comment_post_ID, COUNT(comment_ID) as num_comments FROM $wpdb->comments WHERE comment_post_ID IN ( $post_id_in ) AND comment_approved = '0' GROUP BY comment_post_ID", ARRAY_A );
+
+ if ( $single ) {
+ if ( empty($pending) )
+ return 0;
+ else
+ return absint($pending[0]['num_comments']);
+ }
+
+ $pending_keyed = array();
+
+ // Default to zero pending for all posts in request
+ foreach ( $post_id_array as $id )
+ $pending_keyed[$id] = 0;
+
+ if ( !empty($pending) )
+ foreach ( $pending as $pend )
+ $pending_keyed[$pend['comment_post_ID']] = absint($pend['num_comments']);
+
+ return $pending_keyed;