Creates WordPress network meta and sets the default values.
Parameters
$network_id
int
Required
Network ID to populate meta for.
$meta
array
Optional
Custom meta $key => $value pairs to use.
Default: array()
Source
File: wp-admin/includes/schema.php.
View all references
function populate_network_meta( $network_id, array $meta = array() ) {
global $wpdb, $wp_db_version;
$network_id = (int) $network_id;
$email = ! empty( $meta["admin_email"] ) ? $meta["admin_email"] : "";
$subdomain_install = isset( $meta["subdomain_install"] ) ? (int) $meta["subdomain_install"] : 0;
// If a user with the provided email does not exist, default to the current user as the new network admin.
$site_user = ! empty( $email ) ? get_user_by( "email", $email ) : false;
if ( false === $site_user ) {
$site_user = wp_get_current_user();
}
if ( empty( $email ) ) {
$email = $site_user->user_email;
}
$template = get_option( "template" );
$stylesheet = get_option( "stylesheet" );
$allowed_themes = array( $stylesheet => true );
if ( $template !== $stylesheet ) {
$allowed_themes[ $template ] = true;
}
if ( WP_DEFAULT_THEME !== $stylesheet && WP_DEFAULT_THEME !== $template ) {
$allowed_themes[ WP_DEFAULT_THEME ] = true;
}
// If WP_DEFAULT_THEME doesn"t exist, also include the latest core default theme.
if ( ! wp_get_theme( WP_DEFAULT_THEME )->exists() ) {
$core_default = WP_Theme::get_core_default_theme();
if ( $core_default ) {
$allowed_themes[ $core_default->get_stylesheet() ] = true;
}
}
if ( function_exists( "clean_network_cache" ) ) {
clean_network_cache( $network_id );
} else {
wp_cache_delete( $network_id, "networks" );
}
if ( ! is_multisite() ) {
$site_admins = array( $site_user->user_login );
$users = get_users(
array(
"fields" => array( "user_login" ),
"role" => "administrator",
)
);
if ( $users ) {
foreach ( $users as $user ) {
$site_admins[] = $user->user_login;
}
$site_admins = array_unique( $site_admins );
}
} else {
$site_admins = get_site_option( "site_admins" );
}
/* translators: Do not translate USERNAME, SITE_NAME, BLOG_URL, PASSWORD: those are placeholders. */
$welcome_email = __(
"Howdy USERNAME,
Your new SITE_NAME site has been successfully set up at:
BLOG_URL
You can log in to the administrator account with the following information:
Username: USERNAME
Password: PASSWORD
Log in here: BLOG_URLwp-login.php
We hope you enjoy your new site. Thanks!
--The Team @ SITE_NAME"
);
$misc_exts = array(
// Images.
"jpg",
"jpeg",
"png",
"gif",
"webp",
// Video.
"mov",
"avi",
"mpg",
"3gp",
"3g2",
// "audio".
"midi",
"mid",
// Miscellaneous.
"pdf",
"doc",
"ppt",
"odt",
"pptx",
"docx",
"pps",
"ppsx",
"xls",
"xlsx",
"key",
);
$audio_exts = wp_get_audio_extensions();
$video_exts = wp_get_video_extensions();
$upload_filetypes = array_unique( array_merge( $misc_exts, $audio_exts, $video_exts ) );
$sitemeta = array(
"site_name" => __( "My Network" ),
"admin_email" => $email,
"admin_user_id" => $site_user->ID,
"registration" => "none",
"upload_filetypes" => implode( " ", $upload_filetypes ),
"blog_upload_space" => 100,
"fileupload_maxk" => 1500,
"site_admins" => $site_admins,
"allowedthemes" => $allowed_themes,
"illegal_names" => array( "www", "web", "root", "admin", "main", "invite", "administrator", "files" ),
"wpmu_upgrade_site" => $wp_db_version,
"welcome_email" => $welcome_email,
/* translators: %s: Site link. */
"first_post" => __( "Welcome to %s. This is your first post. Edit or delete it, then start writing!" ),
// @todo - Network admins should have a method of editing the network siteurl (used for cookie hash).
"siteurl" => get_option( "siteurl" ) . "/",
"add_new_users" => "0",
"upload_space_check_disabled" => is_multisite() ? get_site_option( "upload_space_check_disabled" ) : "1",
"subdomain_install" => $subdomain_install,
"ms_files_rewriting" => is_multisite() ? get_site_option( "ms_files_rewriting" ) : "0",
"user_count" => get_site_option( "user_count" ),
"initial_db_version" => get_option( "initial_db_version" ),
"active_sitewide_plugins" => array(),
"WPLANG" => get_locale(),
);
if ( ! $subdomain_install ) {
$sitemeta["illegal_names"][] = "blog";
}
$sitemeta = wp_parse_args( $meta, $sitemeta );
/**
* Filters meta for a network on creation.
*
* @since 3.7.0
*
* @param array $sitemeta Associative array of network meta keys and values to be inserted.
* @param int $network_id ID of network to populate.
*/
$sitemeta = apply_filters( "populate_network_meta", $sitemeta, $network_id );
$insert = "";
foreach ( $sitemeta as $meta_key => $meta_value ) {
if ( is_array( $meta_value ) ) {
$meta_value = serialize( $meta_value );
}
if ( ! empty( $insert ) ) {
$insert .= ", ";
}
$insert .= $wpdb->prepare( "( %d, %s, %s)", $network_id, $meta_key, $meta_value );
}
$wpdb->query( "INSERT INTO $wpdb->sitemeta ( site_id, meta_key, meta_value ) VALUES " . $insert ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
}