populate_network_meta( int $network_id, array $meta = array() )

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

}

Leave a Reply

Your email address will not be published. Required fields are marked *