wpmu_create_blog( string $domain, string $path, string $title, int $user_id, array $meta = array(), int $network_id = 1 )
Create 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
- $domain
-
(Required) The new site's domain.
- $path
-
(Required) The new site's path.
- $title
-
(Required) The new site's title.
- $user_id
-
(Required) The user ID of the new site's admin.
- $meta
-
(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 value: array()
- $network_id
-
(Optional) Network ID. Only relevant on multi-network installations.
Default value: 1
Return
(int|WP_Error) Returns WP_Error object on failure, the new site ID on success.
Source
File: wp-includes/ms-functions.php
function wpmu_create_blog( $domain, $path, $title, $user_id, $meta = array(), $network_id = 1 ) {
$defaults = array(
'public' => 0,
'WPLANG' => get_network_option( $network_id, 'WPLANG' ),
);
$meta = wp_parse_args( $meta, $defaults );
$domain = preg_replace( '/\s+/', '', sanitize_user( $domain, true ) );
if ( is_subdomain_install() )
$domain = str_replace( '@', '', $domain );
$title = strip_tags( $title );
$user_id = (int) $user_id;
if ( empty($path) )
$path = '/';
// 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 );
}
if ( ! $blog_id = insert_blog($domain, $path, $network_id) )
return new WP_Error('insert_blog', __('Could not create site.'));
switch_to_blog($blog_id);
install_blog($blog_id, $title);
wp_install_defaults($user_id);
add_user_to_blog($blog_id, $user_id, 'administrator');
foreach ( $meta as $key => $value ) {
if ( in_array( $key, array( 'public', 'archived', 'mature', 'spam', 'deleted', 'lang_id' ) ) )
update_blog_status( $blog_id, $key, $value );
else
update_option( $key, $value );
}
update_option( 'blog_public', (int) $meta['public'] );
if ( ! is_super_admin( $user_id ) && ! get_user_meta( $user_id, 'primary_blog', true ) )
update_user_meta( $user_id, 'primary_blog', $blog_id );
restore_current_blog();
/**
* Fires immediately after a new site is created.
*
* @since WP-MU (3.0.0)
*
* @param int $blog_id Site ID.
* @param int $user_id User ID.
* @param string $domain Site domain.
* @param string $path Site path.
* @param int $network_id Network ID. Only relevant on multi-network installations.
* @param array $meta Meta data. Used to set initial site options.
*/
do_action( 'wpmu_new_blog', $blog_id, $user_id, $domain, $path, $network_id, $meta );
wp_cache_set( 'last_changed', microtime(), 'sites' );
return $blog_id;
}
Changelog
Version | Description |
---|---|
WP-MU | Introduced. (3.0.0) |