Opened 7 years ago
Last modified 6 years ago
#43306 new defect (bug)
Creating site using wpmu_create_blog() without / prefixed with $path causes get_id_from_blogname() to fail.
Reported by: | aubreypwd | Owned by: | |
---|---|---|---|
Milestone: | Awaiting Review | Priority: | normal |
Severity: | normal | Version: | 4.9.4 |
Component: | General | Keywords: | |
Focuses: | multisite | Cc: |
Description
The below code will result in NULL
:
$id = wpmu_create_blog( 'example.org', 'example', 'neutralized', 1 );
$result = get_id_from_blogname( 'example' );
But the below code will result in an int
.
$id = wpmu_create_blog( 'example.org', '/example', 'neutralized', 1 );
$result = get_id_from_blogname( 'example' );
The difference is in the 2nd snippet I prefix $path
with a /
. Without that being apparent in docs we should strip the need for the /
or update docs.
I found this while writing a unit test, and you can see it changing below:
Attachments (2)
Change History (5)
#2
@
6 years ago
This does seem to be limited to subdomain setup.
When running:
<?php add_action( 'init', function() { if ( wp_doing_ajax() ) { return; } if ( ! isset( $_GET['create' ] ) ) { return; } $id = wpmu_create_blog( $_SERVER['HTTP_HOST'], 'example1', 'example1', 1 ); $result = get_id_from_blogname( 'example1' ); error_log( "example1: $id -> $result" ); $id = wpmu_create_blog( $_SERVER['HTTP_HOST'], '/example2', 'example2', 1 ); $result = get_id_from_blogname( 'example2' ); error_log( "example2: $id -> $result " ); wp_redirect( admin_url( 'network/sites.php' ) ); exit; } );
... as a mu-plugin
, I get the following results:
[01-Apr-2019 21:54:30 UTC] example1: 15 -> [01-Apr-2019 21:54:32 UTC] example2: 16 -> [01-Apr-2019 21:54:41 UTC] example1: 8 -> 8 [01-Apr-2019 21:54:42 UTC] example2: 9 -> 9
The first two are on the sub-domain setup, the next 2 are on a sub-directory setup. For some reason, right after creating a site, I can't call the site get_id_from_blogname
on a sub-domain setup.
This is also testing on trunk
.
#3
@
6 years ago
It appears it's because the $site_ids = get_sites(
part is returning nothing on a subdomain setup when I use get_id_from_blogname
. This comes up with ID's on sub-dir setup.
$site_ids = get_sites(
array(
'number' => 1,
'fields' => 'ids',
'domain' => $domain,
'path' => $path,
'update_site_meta_cache' => false,
)
);
Without looking, there might be a distinction here between subdomain and subdirectory installations.
Was this on a subdirectory network, where it's expecting to see a site as
/this
?