Networks and Sites: Ensure the site ID in wp_insert_site()
is still correct after calling clean_blog_cache()
.
By saving `$wpdb->insert_id` to a variable, we make sure the ID does not change if another database insert is performed on the `clean_site_cache` action. Props trepmal. Fixes #50324. git-svn-id: https://develop.svn.wordpress.org/trunk@47932 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
eb1c55a7ac
commit
65f22692bb
@ -69,9 +69,11 @@ function wp_insert_site( array $data ) {
|
||||
return new WP_Error( 'db_insert_error', __( 'Could not insert site into the database.' ), $wpdb->last_error );
|
||||
}
|
||||
|
||||
clean_blog_cache( $wpdb->insert_id );
|
||||
$site_id = (int) $wpdb->insert_id;
|
||||
|
||||
$new_site = get_site( $wpdb->insert_id );
|
||||
clean_blog_cache( $site_id );
|
||||
|
||||
$new_site = get_site( $site_id );
|
||||
|
||||
if ( ! $new_site ) {
|
||||
return new WP_Error( 'get_site_error', __( 'Could not retrieve site data.' ) );
|
||||
|
@ -1386,6 +1386,32 @@ if ( is_multisite() ) :
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 50324
|
||||
*/
|
||||
public function test_wp_insert_site_with_clean_site_cache() {
|
||||
remove_action( 'wp_initialize_site', 'wp_initialize_site', 10 );
|
||||
|
||||
add_action( 'clean_site_cache', array( $this, 'action_database_insert_on_clean_site_cache' ) );
|
||||
|
||||
$site_id = wp_insert_site(
|
||||
array(
|
||||
'domain' => 'valid-domain.com',
|
||||
'path' => '/valid-path/',
|
||||
'network_id' => 1,
|
||||
)
|
||||
);
|
||||
|
||||
remove_action( 'clean_site_cache', array( $this, 'action_database_insert_on_clean_site_cache' ) );
|
||||
|
||||
$this->assertInternalType( 'integer', $site_id );
|
||||
|
||||
}
|
||||
|
||||
public function action_database_insert_on_clean_site_cache() {
|
||||
update_site_option( 'database_write_test.' . time(), true );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 40364
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user