WordPress Version: 6.1
/**
* Gets the number of pending comments on a post or posts.
*
* @since 2.3.0
*
* @global wpdb $wpdb WordPress database abstraction object.
*
* @param int|int[] $post_id Either a single Post ID or an array of Post IDs
* @return int|int[] Either a single Posts pending comments as an int or an array of ints keyed on the Post IDs
*/
function get_pending_comments_num($post_id)
{
global $wpdb;
$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;
}