wpmu_create_blog()WP 3.0.0

Creates a site.

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 '/'.

Хуков нет.


int|WP_Error. Returns WP_Error object on failure, the new site ID on success.


wpmu_create_blog( $domain, $path, $title, $user_id, $options, $network_id );
$domain(строка) (обязательный)
The new site's domain.
$path(строка) (обязательный)
The new site's path.
$title(строка) (обязательный)
The new site's title.
$user_id(int) (обязательный)
The user ID of the new site's admin.
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.
По умолчанию: empty array
Network ID. Only relevant on multi-network installations.
По умолчанию: 1

Список изменений

С версии 3.0.0 Введена.

Код wpmu_create_blog() WP 6.5.3

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(
			'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;


	return $blog_id;