Make WordPress Core

Ticket #22661: 22661-logic-refactor.diff

File 22661-logic-refactor.diff, 3.0 KB (added by markjaquith, 7 years ago)
  • src/wp-includes/load.php

    diff --git src/wp-includes/load.php src/wp-includes/load.php
    index 704e24472f..e3fee133ec 100644
    function wp_using_ext_object_cache( $using = null ) { 
    530530 */
    531531function wp_start_object_cache() {
    532532        global $wp_filter;
     533        static $first_init = true;
     534
     535        // Only perform the following checks once.
     536        if ( $first_init ) {
     537                if ( ! function_exists( 'wp_cache_init' ) ) {
     538                        /*
     539                         * This is the normal situation. First-run of this function. No
     540                         * caching backend has been loaded.
     541                         *
     542                         * We try to load a custom caching backend, and then, if it
     543                         * results in a wp_cache_init() function existing, we note
     544                         * that an external object cache is being used.
     545                         */
     546                        if ( file_exists( WP_CONTENT_DIR . '/object-cache.php' ) ) {
     547                                require_once ( WP_CONTENT_DIR . '/object-cache.php' );
     548                                if ( function_exists( 'wp_cache_init' ) ) {
     549                                        wp_using_ext_object_cache( true );
     550                                }
    533551
    534         $first_init = false;
    535         if ( ! function_exists( 'wp_cache_init' ) ) {
    536                 if ( file_exists( WP_CONTENT_DIR . '/object-cache.php' ) ) {
    537                         require_once( WP_CONTENT_DIR . '/object-cache.php' );
    538                         if ( function_exists( 'wp_cache_init' ) ) {
    539                                 wp_using_ext_object_cache( true );
    540                         }
    541 
    542                         // Re-initialize any hooks added manually by object-cache.php
    543                         if ( $wp_filter ) {
    544                                 $wp_filter = WP_Hook::build_preinitialized_hooks( $wp_filter );
     552                                // Re-initialize any hooks added manually by object-cache.php
     553                                if ( $wp_filter ) {
     554                                        $wp_filter = WP_Hook::build_preinitialized_hooks( $wp_filter );
     555                                }
    545556                        }
     557                } elseif ( ! wp_using_ext_object_cache() && file_exists( WP_CONTENT_DIR . '/object-cache.php' ) ) {
     558                        /*
     559                         * Sometimes advanced-cache.php can load object-cache.php before
     560                         * this function is run. This breaks the function_exists() check
     561                         * above and can result in wp_using_ext_object_cache() returning
     562                         * false when actually an external cache is in use.
     563                         */
     564                        wp_using_ext_object_cache( true );
    546565                }
    547 
    548                 $first_init = true;
    549         } elseif ( ! wp_using_ext_object_cache() && file_exists( WP_CONTENT_DIR . '/object-cache.php' ) ) {
    550                 /*
    551                  * Sometimes advanced-cache.php can load object-cache.php before
    552                  * it is loaded here. This breaks the function_exists check above
    553                  * and can result in `$_wp_using_ext_object_cache` being set
    554                  * incorrectly. Double check if an external cache exists.
    555                  */
    556                 wp_using_ext_object_cache( true );
    557566        }
    558567
    559568        if ( ! wp_using_ext_object_cache() ) {
    560                 require_once( ABSPATH . WPINC . '/cache.php' );
     569                require_once ( ABSPATH . WPINC . '/cache.php' );
    561570        }
    562571
    563572        /*
    function wp_start_object_cache() { 
    575584                wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'blog-lookup', 'blog-details', 'site-details', 'rss', 'global-posts', 'blog-id-cache', 'networks', 'sites' ) );
    576585                wp_cache_add_non_persistent_groups( array( 'counts', 'plugins' ) );
    577586        }
     587
     588        $first_init = false;
    578589}
    579590
    580591/**