+ return $_defer;
+}
+
+/**
+ * Updates the comment count for post(s).
+ *
+ * When $do_deferred is false (is by default) and the comments have been set to
+ * be deferred, the post_id will be added to a queue, which will be updated at a
+ * later date and only updated once per post ID.
+ *
+ * If the comments have not be set up to be deferred, then the post will be
+ * updated. When $do_deferred is set to true, then all previous deferred post
+ * IDs will be updated along with the current $post_id.
+ *
+ * @since 2.1.0
+ * @see wp_update_comment_count_now() For what could cause a false return value
+ *
+ * @param int $post_id Post ID
+ * @param bool $do_deferred Whether to process previously deferred post comment counts
+ * @return bool True on success, false on failure
+ */
+function wp_update_comment_count($post_id, $do_deferred=false) {
+ static $_deferred = array();
+
+ if ( $do_deferred ) {
+ $_deferred = array_unique($_deferred);
+ foreach ( $_deferred as $i => $_post_id ) {
+ wp_update_comment_count_now($_post_id);
+ unset( $_deferred[$i] ); /** @todo Move this outside of the foreach and reset $_deferred to an array instead */
+ }
+ }
+
+ if ( wp_defer_comment_counting() ) {
+ $_deferred[] = $post_id;
+ return true;
+ }
+ elseif ( $post_id ) {
+ return wp_update_comment_count_now($post_id);
+ }
+
+}
+
+/**
+ * Updates the comment count for the post.
+ *
+ * @since 2.5
+ * @uses $wpdb
+ * @uses do_action() Calls 'wp_update_comment_count' hook on $post_id, $new, and $old
+ * @uses do_action() Calls 'edit_posts' hook on $post_id and $post
+ *
+ * @param int $post_id Post ID
+ * @return bool False on '0' $post_id or if post with ID does not exist. True on success.
+ */
+function wp_update_comment_count_now($post_id) {
+ global $wpdb;