WordPress.org

Make WordPress Core

Ticket #36409: 36409-2.patch

File 36409-2.patch, 1.4 KB (added by sidati, 5 years ago)
  • comment.php

     
    21512151        $new = apply_filters( 'pre_wp_update_comment_count_now', null, $old, $post_id );
    21522152
    21532153        if ( is_null( $new ) ) {
    2154                 $new = (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved = '1'", $post_id ) );
     2154
     2155                $_bad_parents = $bad_parents = array();
     2156                $depth = $_depth = get_option('thread_comments_depth', 5);
     2157
     2158                while ($depth > 1) {
     2159
     2160                        if ($_depth == $depth) {
     2161                                $depth--;
     2162                                $clause = " AND comment_approved != '1'";
     2163                        } else {
     2164                                $depth--;
     2165                                if ($_bad_parents != $bad_parents) {
     2166                                        $_bad_parents = $bad_parents;
     2167                                } else {
     2168                                        continue;
     2169                                }
     2170
     2171                                $clause = ' AND comment_parent IN ('.implode(',', $bad_parents).')';
     2172                        }
     2173
     2174                        $bad_parents = array_merge($bad_parents, $wpdb->get_col("SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = $post_id.$clause"));
     2175                        $bad_parents = array_unique($bad_parents);
     2176                }
     2177
     2178
     2179                $bad_parents = implode(',', $bad_parents);
     2180
     2181                $new = (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved = '1' AND comment_parent NOT IN ($bad_parents)", $post_id ) );
    21552182        } else {
    21562183                $new = (int) $new;
    21572184        }