WordPress Version: 6.5
/**
* Creates WordPress network meta and sets the default values.
*
* @since 5.1.0
*
* @global wpdb $wpdb WordPress database abstraction object.
* @global int $wp_db_version WordPress database version.
*
* @param int $network_id Network ID to populate meta for.
* @param array $meta Optional. Custom meta $key => $value pairs to use. Default empty array.
*/
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',
'avif',
// 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
}