Make WordPress Core

Changeset 40478 for trunk


Ignore:
Timestamp:
04/19/2017 06:51:25 PM (7 years ago)
Author:
ocean90
Message:

Multisite: After [37918] add support for retrieving custom site properties set by the site_details filter.

The behaviour was previously possible with the blog_details filter and get_blog_details() function. The former is deprecated since [38936].
This change adjusts the magic methods of WP_Site to also check if $key exists in WP_Site::get_details().

Fixes #40458.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/class-wp-site.php

    r40344 r40478  
    241241            case 'post_count':
    242242            case 'home':
     243            default: // Custom properties added by 'site_details' filter.
    243244                if ( ! did_action( 'ms_loaded' ) ) {
    244245                    return null;
    245246                }
     247
    246248                $details = $this->get_details();
    247                 return $details->$key;
     249                if ( isset( $details->$key ) ) {
     250                    return $details->$key;
     251                }
    248252        }
    249253
     
    276280                }
    277281                return true;
     282            default: // Custom properties added by 'site_details' filter.
     283                if ( ! did_action( 'ms_loaded' ) ) {
     284                    return false;
     285                }
     286
     287                $details = $this->get_details();
     288                if ( isset( $details->$key ) ) {
     289                    return true;
     290                }
    278291        }
    279292
  • trunk/tests/phpunit/tests/multisite/siteDetails.php

    r40344 r40478  
    145145        $this->assertNotFalse( $cached_details );
    146146    }
     147
     148    public function test_site_details_filter_with_blogname() {
     149        add_filter( 'site_details', array( $this, '_filter_site_details_blogname' ) );
     150        $site = get_site();
     151        $blogname = $site->blogname;
     152        remove_filter( 'site_details', array( $this, '_filter_site_details_blogname' ) );
     153
     154        $this->assertSame( 'Foo Bar', $blogname );
     155    }
     156
     157    public function _filter_site_details_blogname( $details ) {
     158        $details->blogname = 'Foo Bar';
     159        return $details;
     160    }
     161
     162    /**
     163     * @ticket 40458
     164     */
     165    public function test_site_details_filter_with_custom_value_isetter() {
     166        add_filter( 'site_details', array( $this, '_filter_site_details_custom_value' ) );
     167        $site = get_site();
     168        $custom_value_isset = isset( $site->custom_value );
     169        remove_filter( 'site_details', array( $this, '_filter_site_details_custom_value' ) );
     170
     171        $this->assertTrue( $custom_value_isset );
     172    }
     173
     174    /**
     175     * @ticket 40458
     176     */
     177    public function test_site_details_filter_with_custom_value_getter() {
     178        add_filter( 'site_details', array( $this, '_filter_site_details_custom_value' ) );
     179        $site = get_site();
     180        $custom_value = $site->custom_value;
     181        remove_filter( 'site_details', array( $this, '_filter_site_details_custom_value' ) );
     182
     183        $this->assertSame( 'foo', $custom_value );
     184    }
     185
     186    public function _filter_site_details_custom_value( $details ) {
     187        $details->custom_value = 'foo';
     188        return $details;
     189    }
    147190}
    148191
Note: See TracChangeset for help on using the changeset viewer.