WordPress.org

Make WordPress Core

Ticket #27538: 27538.patch

File 27538.patch, 2.4 KB (added by westonruter, 6 years ago)

Skip widget() caching in customizer for Recent Posts and Recent Comments widgets. See also https://github.com/x-team/wordpress-develop/pull/7

  • src/wp-includes/default-widgets.php

    diff --git src/wp-includes/default-widgets.php src/wp-includes/default-widgets.php
    index 68048c3..aeafa92 100644
    class WP_Widget_Recent_Posts extends WP_Widget { 
    660660        }
    661661
    662662        function widget($args, $instance) {
    663                 $cache = wp_cache_get('widget_recent_posts', 'widget');
     663                global $wp_customize;
     664                $is_customize_preview = ( isset( $wp_customize ) && $wp_customize->is_preview() ) ;
    664665
    665                 if ( !is_array($cache) )
     666                $cache = array();
     667                if ( ! $is_customize_preview ) {
     668                        $cache = wp_cache_get( 'widget_recent_posts', 'widget' );
     669                }
     670
     671                if ( ! is_array( $cache ) ) {
    666672                        $cache = array();
     673                }
    667674
    668                 if ( ! isset( $args['widget_id'] ) )
     675                if ( ! isset( $args['widget_id'] ) ) {
    669676                        $args['widget_id'] = $this->id;
     677                }
    670678
    671679                if ( isset( $cache[ $args['widget_id'] ] ) ) {
    672680                        echo $cache[ $args['widget_id'] ];
    class WP_Widget_Recent_Posts extends WP_Widget { 
    723731
    724732                endif;
    725733
    726                 $cache[$args['widget_id']] = ob_get_flush();
    727                 wp_cache_set('widget_recent_posts', $cache, 'widget');
     734                if ( ! $is_customize_preview ) {
     735                        $cache[ $args['widget_id'] ] = ob_get_flush();
     736                        wp_cache_set( 'widget_recent_posts', $cache, 'widget' );
     737                } else {
     738                        ob_flush();
     739                }
    728740        }
    729741
    730742        function update( $new_instance, $old_instance ) {
    class WP_Widget_Recent_Comments extends WP_Widget { 
    805817        }
    806818
    807819        function widget( $args, $instance ) {
    808                 global $comments, $comment;
    809 
    810                 $cache = wp_cache_get('widget_recent_comments', 'widget');
     820                global $comments, $comment, $wp_customize;
     821                $is_customize_preview = ( isset( $wp_customize ) && $wp_customize->is_preview() );
    811822
    812                 if ( ! is_array( $cache ) )
     823                $cache = array();
     824                if ( ! $is_customize_preview ) {
     825                        $cache = wp_cache_get('widget_recent_comments', 'widget');
     826                }
     827                if ( ! is_array( $cache ) ) {
    813828                        $cache = array();
     829                }
    814830
    815831                if ( ! isset( $args['widget_id'] ) )
    816832                        $args['widget_id'] = $this->id;
    class WP_Widget_Recent_Comments extends WP_Widget { 
    865881                $output .= $after_widget;
    866882
    867883                echo $output;
    868                 $cache[$args['widget_id']] = $output;
    869                 wp_cache_set('widget_recent_comments', $cache, 'widget');
     884
     885                if ( ! $is_customize_preview ) {
     886                        $cache[ $args['widget_id'] ] = $output;
     887                        wp_cache_set( 'widget_recent_comments', $cache, 'widget' );
     888                }
    870889        }
    871890
    872891        function update( $new_instance, $old_instance ) {