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

$domainstringrequired
The new site’s domain.
$pathstringrequired
The new site’s path.
$titlestringrequired
The new site’s title.
$user_idintrequired
The user ID of the new site’s admin.
$optionsarrayoptional
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_idintoptional
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

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_sites_last_changed();	return $blog_id; } 

Changelog

VersionDescription
MU (3.0.0)Introduced.

User Contributed Notes

  1. Skip to note 2 content

    It’s important to note that the default value of the $network_id parameter is 1. However, your network ID might be different.

    For this reason, it’s advisable to use get_current_network_id() function to prevent the creation of sites on the wrong network.

    $site_id = wpmu_create_blog(	$domain,	$path,	$title,	$user_id,	$options,	get_current_network_id() );

You must log in before being able to contribute a note or feedback.