WordPress.org

Make WordPress Core

Ticket #15400: 15400-updated.patch

File 15400-updated.patch, 2.0 KB (added by chalet16, 5 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/**