wp_insert_site() – Inserts a new site into the database.

You appear to be a bot. Output may be restricted

Description

Inserts a new site into the database.

Usage

$int|WP_Error = wp_insert_site( $data );

Parameters

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

Returns

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

Source

File name: wordpress/wp-includes/ms-site.php


Lines:

1 to 100 of 107
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',

 View on GitHub View on Trac