Multisite: Use `get_current_blog_id()` in `get_site()` for current site.
The global `$current_blog` is not switched in `switch_to_blog()` and can not be used to properly retrieve current switched site information. See #37607. git-svn-id: https://develop.svn.wordpress.org/trunk@38217 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
0bbd0f3a5f
commit
0df4e1f026
|
@ -478,15 +478,12 @@ function clean_blog_cache( $blog ) {
|
||||||
*
|
*
|
||||||
* @since 4.6.0
|
* @since 4.6.0
|
||||||
*
|
*
|
||||||
* @global WP_Site $current_blog The current site.
|
|
||||||
*
|
|
||||||
* @param WP_Site|int|null $site Optional. Site to retrieve. Default is the current site.
|
* @param WP_Site|int|null $site Optional. Site to retrieve. Default is the current site.
|
||||||
* @return WP_Site|null The site object or null if not found.
|
* @return WP_Site|null The site object or null if not found.
|
||||||
*/
|
*/
|
||||||
function get_site( &$site = null ) {
|
function get_site( &$site = null ) {
|
||||||
global $current_blog;
|
if ( empty( $site ) ) {
|
||||||
if ( empty( $site ) && isset( $current_blog ) ) {
|
$site = get_current_blog_id();
|
||||||
$site = $current_blog;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $site instanceof WP_Site ) {
|
if ( $site instanceof WP_Site ) {
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
if ( is_multisite() ) :
|
||||||
|
/**
|
||||||
|
* Test get_site() wrapper of WP_Site in multisite.
|
||||||
|
*
|
||||||
|
* @group ms-site
|
||||||
|
* @group multisite
|
||||||
|
*/
|
||||||
|
class Tests_Multisite_Get_Site extends WP_UnitTestCase {
|
||||||
|
protected static $site_ids;
|
||||||
|
|
||||||
|
public static function wpSetUpBeforeClass( $factory ) {
|
||||||
|
self::$site_ids = array(
|
||||||
|
'wordpress.org/' => array( 'domain' => 'wordpress.org', 'path' => '/' ),
|
||||||
|
'wordpress.org/foo/' => array( 'domain' => 'wordpress.org', 'path' => '/foo/' ),
|
||||||
|
'wordpress.org/foo/bar/' => array( 'domain' => 'wordpress.org', 'path' => '/foo/bar/' ),
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ( self::$site_ids as &$id ) {
|
||||||
|
$id = $factory->blog->create( $id );
|
||||||
|
}
|
||||||
|
unset( $id );
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function wpTearDownAfterClass() {
|
||||||
|
foreach( self::$site_ids as $id ) {
|
||||||
|
wpmu_delete_blog( $id, true );
|
||||||
|
}
|
||||||
|
|
||||||
|
wp_update_network_site_counts();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_get_site_in_switched_state_returns_switched_site() {
|
||||||
|
switch_to_blog( self::$site_ids[ 'wordpress.org/foo/' ] );
|
||||||
|
$site = get_site();
|
||||||
|
restore_current_blog();
|
||||||
|
|
||||||
|
$this->assertEquals( self::$site_ids[ 'wordpress.org/foo/'], $site->id );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
endif;
|
Loading…
Reference in New Issue