On this page
wpmu_create_blog( string $domain, string $path, string $title, int $user_id, array $options = array(), int $network_id = 1 ): int|WP_Error
Creates a site.
Description
This function runs when a user self-registers a new site as well as when a Super Admin creates a new site. Hook to ‘wpmu_new_blog’ for events that should affect all new sites.
On subdirectory installations, $domain is the same as the main site’s domain, and the path is the subdirectory name (eg ‘example.com’ and ‘/blog1/’). On subdomain installations, $domain is the new subdomain + root domain (eg ‘blog1.example.com’), and $path is ‘/’.
Parameters
$domainstring Required-
The new site's domain.
$pathstring Required-
The new site's path.
$titlestring Required-
The new site's title.
$user_idint Required-
The user ID of the new site's admin.
$optionsarray Optional-
Array of key=>value pairs used to set initial site options.
If valid status keys are included ('public','archived','mature','spam','deleted', or'lang_id') the given site status(es) will be updated. Otherwise, keys and values will be used to set options for the new site.Default:
array() $network_idint Optional-
Network ID. Only relevant on multi-network installations.
Default:
1
Return
int|WP_Error Returns WP_Error object on failure, the new site ID on success.
Source
File: wp-includes/ms-functions.php. View all references
function wpmu_create_blog( $domain, $path, $title, $user_id, $options = array(), $network_id = 1 ) {
$defaults = array(
'public' => 0,
);
$options = wp_parse_args( $options, $defaults );
$title = strip_tags( $title );
$user_id = (int) $user_id;
// Check if the domain has been used already. We should return an error message.
if ( domain_exists( $domain, $path, $network_id ) ) {
return new WP_Error( 'blog_taken', __( 'Sorry, that site already exists!' ) );
}
if ( ! wp_installing() ) {
wp_installing( true );
}
$allowed_data_fields = array( 'public', 'archived', 'mature', 'spam', 'deleted', 'lang_id' );
$site_data = array_merge(
array(
'domain' => $domain,
'path' => $path,
'network_id' => $network_id,
),
array_intersect_key( $options, array_flip( $allowed_data_fields ) )
);
// Data to pass to wp_initialize_site().
$site_initialization_data = array(
'title' => $title,
'user_id' => $user_id,
'options' => array_diff_key( $options, array_flip( $allowed_data_fields ) ),
);
$blog_id = wp_insert_site( array_merge( $site_data, $site_initialization_data ) );
if ( is_wp_error( $blog_id ) ) {
return $blog_id;
}
wp_cache_set( 'last_changed', microtime(), 'sites' );
return $blog_id;
}
Related
Uses
| Uses | Description |
|---|---|
| wp_insert_site() wp-includes/ms-site.php | Inserts a new site into the database. |
| wp_installing() wp-includes/load.php | Check or set whether WordPress is in “installation” mode. |
| wp_cache_set() wp-includes/cache.php | Saves the data to the cache. |
| domain_exists() wp-includes/ms-functions.php | Checks whether a site name is already taken. |
| __() wp-includes/l10n.php | Retrieves the translation of $text. |
| wp_parse_args() wp-includes/functions.php | Merges user defined arguments into defaults array. |
| is_wp_error() wp-includes/load.php | Checks whether the given variable is a WordPress Error. |
| WP_Error::__construct() wp-includes/class-wp-error.php | Initializes the error. |
Used By
| Used By | Description |
|---|---|
| validate_another_blog_signup() wp-signup.php | Validates a new site sign-up for an existing user. |
| wpmu_activate_signup() wp-includes/ms-functions.php | Activates a signup. |
Changelog
| Version | Description |
|---|---|
| MU (3.0.0) | Introduced. |
© 2003–2022 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/functions/wpmu_create_blog