Multisite: Add `$network_id` parameter to `wp_update_network_site_counts()`.

Using the new parameter, it is now possible to update the site counts on a network different from the current network.

Props PieWP, johnjamesjacoby.
Fixes #37528. See #38699.


git-svn-id: https://develop.svn.wordpress.org/trunk@40484 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Felix Arntz 2017-04-19 23:59:16 +00:00
parent ff25986f02
commit 9bf39fa0fc
2 changed files with 41 additions and 5 deletions

View File

@ -2329,21 +2329,25 @@ function wp_maybe_update_network_user_counts() {
* Update the network-wide site count. * Update the network-wide site count.
* *
* @since 3.7.0 * @since 3.7.0
* @since 4.8.0 The $network_id parameter has been added.
* *
* @global wpdb $wpdb WordPress database abstraction object. * @param int|null $network_id ID of the network. Default is the current network.
*/ */
function wp_update_network_site_counts() { function wp_update_network_site_counts( $network_id = null ) {
global $wpdb; $network_id = (int) $network_id;
if ( ! $network_id ) {
$network_id = get_current_network_id();
}
$count = get_sites( array( $count = get_sites( array(
'network_id' => $wpdb->siteid, 'network_id' => $network_id,
'spam' => 0, 'spam' => 0,
'deleted' => 0, 'deleted' => 0,
'archived' => 0, 'archived' => 0,
'count' => true, 'count' => true,
) ); ) );
update_site_option( 'blog_count', $count ); update_network_option( $network_id, 'blog_count', $count );
} }
/** /**

View File

@ -376,6 +376,38 @@ class Tests_Multisite_Network extends WP_UnitTestCase {
$dashboard_blog = get_dashboard_blog(); $dashboard_blog = get_dashboard_blog();
$this->assertEquals( $blog_id, $dashboard_blog->blog_id ); $this->assertEquals( $blog_id, $dashboard_blog->blog_id );
} }
/**
* @ticket 37528
*/
function test_wp_update_network_site_counts() {
update_network_option( null, 'blog_count', 40 );
$expected = get_sites( array(
'network_id' => get_current_network_id(),
'spam' => 0,
'deleted' => 0,
'archived' => 0,
'count' => true,
) );
wp_update_network_site_counts();
$result = get_blog_count();
$this->assertEquals( $expected, $result );
}
/**
* @ticket 37528
*/
function test_wp_update_network_site_counts_on_different_network() {
update_network_option( self::$different_network_id, 'blog_count', 40 );
wp_update_network_site_counts( self::$different_network_id );
$result = get_blog_count( self::$different_network_id );
$this->assertEquals( 3, $result );
}
} }
endif; endif;