wp_initialize_site()
Запускает подготовку нового сайта в WordPress Multisite: создает таблицы базы данных, заполняет стандартные опции, роли, метаданные и начальное содержимое сайта.
Функция используется для инициализации сайта, который уже добавлен в сеть, но еще не подготовлен к работе. Обычно она вызывается не напрямую, а через процесс создания сайта из wp_insert_site().
Во время работы функция переключается на нужный сайт через switch_to_blog(), создает таблицы, задает базовые опции home, siteurl, blogname, blog_public, добавляет стандартные роли, создает начальные записи/страницы и назначает указанного пользователя администратором сайта.
Функция предназначена для Multisite. Если сайт уже был инициализирован, повторный запуск вернет ошибку WP_Error, чтобы не перезаписать уже созданную структуру сайта.
Аргументы инициализации можно изменить через фильтр wp_initialize_site_args. Удобно, когда нужно задать свои опции или метаданные для всех новых сайтов сети.
Хуки из функции
Возвращает
true|WP_Error.
true— сайт успешно инициализирован.WP_Error— произошла ошибка: не передан ID сайта, сайт не найден или сайт уже инициализирован.
Использование
wp_initialize_site( $site_id, $args );
- $site_id(int|WP_Site) (обязательный)
- ID сайта или объект WP_Site{}, который нужно инициализировать.
- $args(array)
- Аргументы, которые изменяют поведение инициализации.
По умолчанию:[] user_id(int)- ID пользователя, который станет администратором нового сайта.
title(string)- Название сайта. Если не указано, используется строка вида
Site %d, где%d— ID сайта. options(array)- Массив дополнительных опций сайта в формате
ключ => значение. Передаются в populate_options() и могут переопределить стандартные опции. meta(array)- Массив метаданных сайта в формате
ключ => значение. Передаются в populate_site_meta().
Примеры
#1 Инициализация нового сайта
Пример получает ID уже созданного сайта и запускает для него стандартную инициализацию.
$result = wp_initialize_site( 123, [
'user_id' => 1,
'title' => 'Новый сайт',
] );
if ( is_wp_error( $result ) ) {
wp_die( $result->get_error_message() );
} #2 Передача своих опций при инициализации
Пример задает название сайта, email администратора и закрывает сайт от индексации через опцию blog_public.
$result = wp_initialize_site( 123, [
'user_id' => 1,
'title' => 'Закрытый сайт',
'options' => [
'admin_email' => 'admin@example.com',
'blog_public' => 0,
],
] );
if ( is_wp_error( $result ) ) {
error_log( $result->get_error_message() );
} #3 Добавление своих метаданных сайта
Пример добавляет метаданные, которые будут сохранены для нового сайта во время инициализации.
$result = wp_initialize_site( 123, [
'user_id' => 1,
'title' => 'Сайт клиента',
'meta' => [
'client_id' => 456,
'client_type' => 'premium',
],
] );
if ( true === $result ) {
// Сайт успешно инициализирован.
} #4 Изменение аргументов через фильтр
Пример автоматически добавляет свои опции для каждого нового сайта перед его инициализацией.
add_filter( 'wp_initialize_site_args', 'my_change_site_initialization_args', 10, 3 );
function my_change_site_initialization_args( $args, $site, $network ) {
$args['options']['blog_public'] = 0;
$args['options']['timezone_string'] = 'Europe/Moscow';
$args['meta']['created_by_custom_flow'] = 1;
return $args;
}
Заметки
- Global. wpdb.
$wpdbWordPress database abstraction object. - Global. WP_Roles.
$wp_rolesWordPress role management object.
Список изменений
| С версии 5.1.0 | Введена. |