WordPress.org

Make WordPress Core

Ticket #15400: 15400-updated.patch

File 15400-updated.patch, 2.0 KB (added by chalet16, 7 years ago)

More safety patch (add and also remove object cache)

  • wp-includes/default-widgets.php

     
    649649                else if ( $number < 1 )
    650650                        $number = 1;
    651651
     652                add_action('comments_clauses', array( 'WP_Widget_Recent_Comments', 'comments_query_filter'));
    652653                $comments = get_comments( array( 'number' => $number, 'status' => 'approve' ) );
     654                remove_action('comments_clauses', array( 'WP_Widget_Recent_Comments', 'comments_query_filter'));
    653655                $output .= $before_widget;
    654656                if ( $title )
    655657                        $output .= $before_title . $title . $after_title;
     
    657659                $output .= '<ul id="recentcomments">';
    658660                if ( $comments ) {
    659661                        foreach ( (array) $comments as $comment) {
    660                                 $output .=  '<li class="recentcomments">' . /* translators: comments widget: 1: comment author, 2: post link */ sprintf(_x('%1$s on %2$s', 'widgets'), get_comment_author_link(), '<a href="' . esc_url( get_comment_link($comment->comment_ID) ) . '">' . get_the_title($comment->comment_post_ID) . '</a>') . '</li>';
     662                                $ispostcached = wp_cache_get($comment->ID, 'posts') == false ? false : true;
     663                                if(!$ispostcached) {
     664                                        wp_cache_add($comment->ID, $comment, 'posts');
     665                                }
     666                                $output .=  '<li class="recentcomments">' . /* translators: comments widget: 1: comment author, 2: post link */ sprintf(_x('%1$s on %2$s', 'widgets'), get_comment_author_link(), '<a href="' . esc_url( get_comment_link($comment) ) . '">' . get_the_title($comment) . '</a>') . '</li>';
     667                                if(!$ispostcached) {
     668                                        wp_cache_delete($comment->ID, 'posts');
     669                                }
    661670                        }
    662671                }
    663672                $output .= '</ul>';
     
    692701                <input id="<?php echo $this->get_field_id('number'); ?>" name="<?php echo $this->get_field_name('number'); ?>" type="text" value="<?php echo $number; ?>" size="3" /></p>
    693702<?php
    694703        }
     704
     705        function comments_query_filter($pieces) {
     706                global $wpdb;
     707
     708                $pieces['join'] .= " LEFT JOIN $wpdb->posts ON ( $wpdb->comments.comment_post_ID = $wpdb->posts.ID )";
     709
     710                return $pieces;
     711        }
    695712}
    696713
    697714/**