wp_insert_site() WordPress Function

The wp_insert_site() function is used to create a new site within a WordPress Multisite installation. This function takes two arguments: the first is an array of data containing information about the site to be created, and the second is an array of options. The data array can contain the following keys: domain - The domain name for the new site. path - The path to the new site. title - The title of the new site. user_id - The user ID of the user who will be the administrator of the new site. email - The email address of the new site's administrator. The options array can contain the following keys: send_activation_email - If set to true, an activation email will be sent to the new site's administrator. network_id - The ID of the network to which the new site will be added. If omitted, the current network will be used.

wp_insert_site( array $data ) #

Inserts a new site into the database.


Parameters

$data

(array)(Required)Data for the new site that should be inserted.

  • 'domain'
    (string) Site domain. Default empty string.
  • 'path'
    (string) Site path. Default '/'.
  • 'network_id'
    (int) The site's network ID. Default is the current network ID.
  • 'registered'
    (string) When the site was registered, in SQL datetime format. Default is the current time.
  • 'last_updated'
    (string) When the site was last updated, in SQL datetime format. Default is the value of $registered.
  • 'public'
    (int) Whether the site is public. Default 1.
  • 'archived'
    (int) Whether the site is archived. Default 0.
  • 'mature'
    (int) Whether the site is mature. Default 0.
  • 'spam'
    (int) Whether the site is spam. Default 0.
  • 'deleted'
    (int) Whether the site is deleted. Default 0.
  • 'lang_id'
    (int) The site's language ID. Currently unused. Default 0.
  • 'user_id'
    (int) User ID for the site administrator. Passed to the wp_initialize_site hook.
  • 'title'
    (string) Site title. Default is 'Site %d' where %d is the site ID. Passed to the wp_initialize_site hook.
  • 'options'
    (array) Custom option $key => $value pairs to use. Default empty array. Passed to the wp_initialize_site hook.
  • 'meta'
    (array) Custom site metadata $key => $value pairs to use. Default empty array. Passed to the wp_initialize_site hook.


Top ↑

Return

(int|WP_Error) The new site's ID on success, or error object on failure.


Top ↑

Source

File: wp-includes/ms-site.php

function wp_insert_site( array $data ) {
	global $wpdb;

	$now = current_time( 'mysql', true );

	$defaults = array(
		'domain'       => '',
		'path'         => '/',
		'network_id'   => get_current_network_id(),
		'registered'   => $now,
		'last_updated' => $now,
		'public'       => 1,
		'archived'     => 0,
		'mature'       => 0,
		'spam'         => 0,
		'deleted'      => 0,
		'lang_id'      => 0,
	);

	$prepared_data = wp_prepare_site_data( $data, $defaults );
	if ( is_wp_error( $prepared_data ) ) {
		return $prepared_data;
	}

	if ( false === $wpdb->insert( $wpdb->blogs, $prepared_data ) ) {
		return new WP_Error( 'db_insert_error', __( 'Could not insert site into the database.' ), $wpdb->last_error );
	}

	$site_id = (int) $wpdb->insert_id;

	clean_blog_cache( $site_id );

	$new_site = get_site( $site_id );

	if ( ! $new_site ) {
		return new WP_Error( 'get_site_error', __( 'Could not retrieve site data.' ) );
	}

	/**
	 * Fires once a site has been inserted into the database.
	 *
	 * @since 5.1.0
	 *
	 * @param WP_Site $new_site New site object.
	 */
	do_action( 'wp_insert_site', $new_site );

	// Extract the passed arguments that may be relevant for site initialization.
	$args = array_diff_key( $data, $defaults );
	if ( isset( $args['site_id'] ) ) {
		unset( $args['site_id'] );
	}

	/**
	 * Fires when a site's initialization routine should be executed.
	 *
	 * @since 5.1.0
	 *
	 * @param WP_Site $new_site New site object.
	 * @param array   $args     Arguments for the initialization.
	 */
	do_action( 'wp_initialize_site', $new_site, $args );

	// Only compute extra hook parameters if the deprecated hook is actually in use.
	if ( has_action( 'wpmu_new_blog' ) ) {
		$user_id = ! empty( $args['user_id'] ) ? $args['user_id'] : 0;
		$meta    = ! empty( $args['options'] ) ? $args['options'] : array();

		// WPLANG was passed with `$meta` to the `wpmu_new_blog` hook prior to 5.1.0.
		if ( ! array_key_exists( 'WPLANG', $meta ) ) {
			$meta['WPLANG'] = get_network_option( $new_site->network_id, 'WPLANG' );
		}

		// Rebuild the data expected by the `wpmu_new_blog` hook prior to 5.1.0 using allowed keys.
		// The `$allowed_data_fields` matches the one used in `wpmu_create_blog()`.
		$allowed_data_fields = array( 'public', 'archived', 'mature', 'spam', 'deleted', 'lang_id' );
		$meta                = array_merge( array_intersect_key( $data, array_flip( $allowed_data_fields ) ), $meta );

		/**
		 * Fires immediately after a new site is created.
		 *
		 * @since MU (3.0.0)
		 * @deprecated 5.1.0 Use {@see 'wp_initialize_site'} instead.
		 *
		 * @param int    $site_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_deprecated(
			'wpmu_new_blog',
			array( $new_site->id, $user_id, $new_site->domain, $new_site->path, $new_site->network_id, $meta ),
			'5.1.0',
			'wp_initialize_site'
		);
	}

	return (int) $new_site->id;
}


Top ↑

Changelog

Changelog
VersionDescription
5.1.0Introduced.

The content displayed on this page has been created in part by processing WordPress source code files which are made available under the GPLv2 (or a later version) license by theĀ Free Software Foundation. In addition to this, the content includes user-written examples and information. All material is subject to review and curation by the WPPaste.com community.