WordPress.org

Make WordPress Core

Ticket #16927: 16927.2.diff

File 16927.2.diff, 2.4 KB (added by dd32, 3 years ago)
  • wp-admin/includes/dashboard.php

     
    10311031 */ 
    10321032function wp_dashboard_cached_rss_widget( $widget_id, $callback, $check_urls = array() ) { 
    10331033        $loading = '<p class="widget-loading hide-if-no-js">' . __( 'Loading&#8230;' ) . '</p><p class="hide-if-js">' . __( 'This widget requires JavaScript.' ) . '</p>'; 
     1034        $doing_ajax = ( defined('DOING_AJAX') && DOING_AJAX ); 
    10341035 
    10351036        if ( empty($check_urls) ) { 
    10361037                $widgets = get_option( 'dashboard_widget_options' ); 
    1037                 if ( empty($widgets[$widget_id]['url']) ) { 
     1038                if ( empty($widgets[$widget_id]['url']) && ! $doing_ajax ) { 
    10381039                        echo $loading; 
    10391040                        return false; 
    10401041                } 
    10411042                $check_urls = array( $widgets[$widget_id]['url'] ); 
    10421043        } 
    10431044 
    1044         include_once ABSPATH . WPINC . '/class-feed.php'; 
    1045         foreach ( $check_urls as $check_url ) { 
    1046                 $cache = new WP_Feed_Cache_Transient('', md5($check_url), ''); 
    1047                 if ( ! $cache->load() ) { 
    1048                         echo $loading; 
    1049                         return false; 
    1050                 } 
     1045        $cache_key = 'dash_' . md5( $callback . implode(',', $check_urls) ); 
     1046        if ( false !== ( $output = get_transient( $cache_key ) ) ) { 
     1047                echo $output; 
     1048                return true; 
    10511049        } 
    10521050 
     1051        if ( ! $doing_ajax ) { 
     1052                echo $loading; 
     1053                return false; 
     1054        } 
     1055 
     1056        ob_start(); 
     1057 
    10531058        if ( $callback && is_callable( $callback ) ) { 
    10541059                $args = array_slice( func_get_args(), 2 ); 
    10551060                array_unshift( $args, $widget_id ); 
    10561061                call_user_func_array( $callback, $args ); 
    10571062        } 
     1063         
     1064        set_transient( $cache_key, ob_get_flush(), 43200); //Default lifetime in cache of 12 hours 
    10581065 
    10591066        return true; 
    10601067} 
  • wp-admin/index-extra.php

     
    66 * @subpackage Administration 
    77 */ 
    88 
     9define('DOING_AJAX', true); 
     10 
    911/** Load WordPress Bootstrap */ 
    1012require_once( './admin.php' ); 
    1113 
     
    1820switch ( $_GET['jax'] ) { 
    1921 
    2022case 'dashboard_incoming_links' : 
    21         wp_dashboard_incoming_links_output(); 
     23        wp_dashboard_incoming_links(); 
    2224        break; 
    2325 
    2426case 'dashboard_primary' : 
    25         wp_dashboard_rss_output( 'dashboard_primary' ); 
     27        wp_dashboard_primary(); 
    2628        break; 
    2729 
    2830case 'dashboard_secondary' : 
    29         wp_dashboard_secondary_output(); 
     31        wp_dashboard_secondary(); 
    3032        break; 
    3133 
    3234case 'dashboard_plugins' : 
    33         wp_dashboard_plugins_output(); 
     35        wp_dashboard_plugins(); 
    3436        break; 
    3537 
    3638}