wp-admin/includes/schema.php:1005Populate network settings.
$network_idintoptional1$domainstringoptional''$emailstringoptional''$site_namestringoptional''$pathstringoptional'/'$subdomain_installbooloptionalfalsetrue|WP_Error3 hooks fire while populate_network() runs, in this order:
Fires before a network is populated.
Fires after a network is created when converting a single site to multisite.
Fires after a network is fully populated.
function populate_network( $network_id = 1, $domain = '', $email = '', $site_name = '', $path = '/', $subdomain_install = false ) { global $wpdb, $current_site, $wp_rewrite; $network_id = (int) $network_id; /** * Fires before a network is populated. * * @since 6.9.0 * * @param int $network_id ID of network to populate. * @param string $domain The domain name for the network. * @param string $email Email address for the network administrator. * @param string $site_name The name of the network. * @param string $path The path to append to the network's domain name. * @param bool $subdomain_install Whether the network is a subdomain installation or a subdirectory installation. */ do_action( 'before_populate_network', $network_id, $domain, $email, $site_name, $path, $subdomain_install ); $errors = new WP_Error(); if ( '' === $domain ) { $errors->add( 'empty_domain', __( 'You must provide a domain name.' ) ); } if ( '' === $site_name ) { $errors->add( 'empty_sitename', __( 'You must provide a name for your network of sites.' ) ); } // Check for network collision. if ( is_multisite() ) { if ( get_network( $network_id ) ) { $errors->add( 'siteid_exists', __( 'The network already exists.' ) ); } } else { if ( $network_id === (int) $wpdb->get_var( $wpdb->prepare( "SELECT id FROM $wpdb->site WHERE id = %d", $network_id ) ) ) { $errors->add( 'siteid_exists', __( 'The network already exists.' ) ); } } if ( ! is_email( $email ) ) { $errors->add( 'invalid_email', __( 'You must provide a valid email address.' ) ); } if ( $errors->has_errors() ) { return $errors; } if ( 1 === $network_id ) { $wpdb->insert( $wpdb->site, array( 'domain' => $domain, 'path' => $path, ) ); $network_id = $wpdb->insert_id; } else { $wpdb->insert( $wpdb->site, array( 'domain' => $domain, 'path' => $path, 'id' => $network_id, ) ); } populate_network_meta( $network_id, array( 'admin_email' => $email, 'site_name' => $site_name, 'subdomain_install' => $subdomain_install, ) ); // Remove the cron event since Recovery Mode is not used in Multisite. if ( wp_next_scheduled( 'recovery_mode_clean_expired_keys' ) ) { wp_clear_scheduled_hook( 'recovery_mode_clean_expired_keys' );Introduced in 3.0.0. Unchanged from 6.7.7 through 7.1.0.
Signature, return type and hooks compared across 5 parsed releases.
src/wp-admin/includes/schema.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.