WordPress Version: 5.3
/**
* Updates the comment count for the post.
*
* @since 2.5.0
*
* @global wpdb $wpdb WordPress database abstraction object.
*
* @param int $post_id Post ID
* @return bool True on success, false if the post does not exist.
*/
function wp_update_comment_count_now($post_id)
{
global $wpdb;
$post_id = (int) $post_id;
if (!$post_id) {
return false;
}
wp_cache_delete('comments-0', 'counts');
wp_cache_delete("comments-{$post_id}", 'counts');
$post = get_post($post_id);
if (!$post) {
return false;
}
$old = (int) $post->comment_count;
/**
* Filters a post's comment count before it is updated in the database.
*
* @since 4.5.0
*
* @param int|null $new The new comment count. Default null.
* @param int $old The old comment count.
* @param int $post_id Post ID.
*/
$new = apply_filters('pre_wp_update_comment_count_now', null, $old, $post_id);
if (is_null($new)) {
$new = (int) $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->comments} WHERE comment_post_ID = %d AND comment_approved = '1'", $post_id));
} else {
$new = (int) $new;
}
$wpdb->update($wpdb->posts, array('comment_count' => $new), array('ID' => $post_id));
clean_post_cache($post);
/**
* Fires immediately after a post's comment count is updated in the database.
*
* @since 2.3.0
*
* @param int $post_id Post ID.
* @param int $new The new comment count.
* @param int $old The old comment count.
*/
do_action('wp_update_comment_count', $post_id, $new, $old);
/** This action is documented in wp-includes/post.php */
do_action("edit_post_{$post->post_type}", $post_id, $post);
/** This action is documented in wp-includes/post.php */
do_action('edit_post', $post_id, $post);
return true;
}