Multisite: Use `to_array()` method on `WP_Site` objects in `wp_get_sites()`

When an object with private properties is cast directly to an array, those properties are no longer available with their original keys.

Props @flixos90.
See #36717.


git-svn-id: https://develop.svn.wordpress.org/trunk@37667 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Jeremy Felt 2016-06-09 18:09:25 +00:00
parent 56c98dd30a
commit 363533d9b3
2 changed files with 29 additions and 1 deletions

View File

@ -506,7 +506,8 @@ function wp_get_sites( $args = array() ) {
$results = array();
foreach ( $_sites as $_site ) {
$results[] = (array) get_site( $_site );
$_site = get_site( $_site );
$results[] = $_site->to_array();
}
return $results;

View File

@ -3,6 +3,7 @@
if ( is_multisite() ) :
/**
* @group wp-get-site
* @group ms-site
* @group multisite
*/
@ -31,6 +32,32 @@ class Tests_Multisite_WP_Get_Sites extends WP_UnitTestCase {
wp_update_network_site_counts();
}
/**
* @expectedDeprecated wp_get_sites
*/
public function test_wp_get_sites_site_is_expected_array() {
$keys = array(
'blog_id',
'site_id',
'domain',
'path',
'registered',
'last_updated',
'public',
'archived',
'mature',
'spam',
'deleted',
'lang_id'
);
$sites = wp_get_sites();
$missing_keys = array_diff_key( array_flip( $keys ), $sites[0] );
$this->assertEquals( array(), $missing_keys, 'Keys are missing from site arrays.' );
}
/**
* @expectedDeprecated wp_get_sites
* @dataProvider data_wp_get_sites