WordPress.org

Make WordPress Core

Ticket #27565: 27565.3.diff

File 27565.3.diff, 2.3 KB (added by wonderboymusic, 5 years ago)
  • src/wp-includes/widgets/class-wp-widget-recent-posts.php

     
    2020                $widget_ops = array('classname' => 'widget_recent_entries', 'description' => __( "Your site’s most recent Posts.") );
    2121                parent::__construct('recent-posts', __('Recent Posts'), $widget_ops);
    2222                $this->alt_option_name = 'widget_recent_entries';
    23 
    24                 add_action( 'save_post', array($this, 'flush_widget_cache') );
    25                 add_action( 'deleted_post', array($this, 'flush_widget_cache') );
    26                 add_action( 'switch_theme', array($this, 'flush_widget_cache') );
    2723        }
    2824
    2925        /**
     
    3127         * @param array $instance
    3228         */
    3329        public function widget( $args, $instance ) {
    34                 $cache = array();
    35                 if ( ! $this->is_preview() ) {
    36                         $cache = wp_cache_get( 'widget_recent_posts', 'widget' );
    37                 }
    38 
    39                 if ( ! is_array( $cache ) ) {
    40                         $cache = array();
    41                 }
    42 
    4330                if ( ! isset( $args['widget_id'] ) ) {
    4431                        $args['widget_id'] = $this->id;
    4532                }
    4633
    47                 if ( isset( $cache[ $args['widget_id'] ] ) ) {
    48                         echo $cache[ $args['widget_id'] ];
    49                         return;
    50                 }
    51 
    52                 ob_start();
    53 
    5434                $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : __( 'Recent Posts' );
    5535
    5636                /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
     
    9979                wp_reset_postdata();
    10080
    10181                endif;
    102 
    103                 if ( ! $this->is_preview() ) {
    104                         $cache[ $args['widget_id'] ] = ob_get_flush();
    105                         wp_cache_set( 'widget_recent_posts', $cache, 'widget' );
    106                 } else {
    107                         ob_end_flush();
    108                 }
    10982        }
    11083
    11184        /**
     
    11891                $instance['title'] = sanitize_text_field( $new_instance['title'] );
    11992                $instance['number'] = (int) $new_instance['number'];
    12093                $instance['show_date'] = isset( $new_instance['show_date'] ) ? (bool) $new_instance['show_date'] : false;
    121                 $this->flush_widget_cache();
    122 
    123                 $alloptions = wp_cache_get( 'alloptions', 'options' );
    124                 if ( isset($alloptions['widget_recent_entries']) )
    125                         delete_option('widget_recent_entries');
    126 
    12794                return $instance;
    12895        }
    12996
    13097        /**
    131          * @access public
    132          */
    133         public function flush_widget_cache() {
    134                 wp_cache_delete('widget_recent_posts', 'widget');
    135         }
    136 
    137         /**
    13898         * @param array $instance
    13999         */
    140100        public function form( $instance ) {