# wp_prepare_site_data()

URL: https://chugunov.pro/api-wordpress/functions/wp_prepare_site_data/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 5.1.0.

## Сигнатура

```php
wp_prepare_site_data( array $data, array $defaults, WP_Site|null $old_site = null ): array|WP_Error
```

## Описание

Подготавливает данные сайта для вставки или обновления в базе данных.

## Параметры

- `$data` `array` — обязательный. Ассоциативный массив данных сайта, передаваемый в соответствующую функцию.
  
  Возможный состав данных см. в wp_insert_site().
- `$defaults` `array` — обязательный. Значения данных сайта по умолчанию, с которыми сопоставляется $data.
- `$old_site` `WP_Site|null` — необязательный, по умолчанию `null`. Прежний объект сайта при обновлении или null при вставке.

## Возвращаемое значение

`array|WP_Error` — WP_Error

## Исходный код

Файл: `wp-includes/ms-site.php:464`

```php
function wp_prepare_site_data( $data, $defaults, $old_site = null ) {

	// Maintain backward-compatibility with `$site_id` as network ID.
	if ( isset( $data['site_id'] ) ) {
		if ( ! empty( $data['site_id'] ) && empty( $data['network_id'] ) ) {
			$data['network_id'] = $data['site_id'];
		}
		unset( $data['site_id'] );
	}

	/**
	 * Filters passed site data in order to normalize it.
	 *
	 * @since 5.1.0
	 *
	 * @param array $data Associative array of site data passed to the respective function.
	 *                    See wp_insert_site() for the possibly included data.
	 */
	$data = apply_filters( 'wp_normalize_site_data', $data );

	$allowed_data_fields = array( 'domain', 'path', 'network_id', 'registered', 'last_updated', 'public', 'archived', 'mature', 'spam', 'deleted', 'lang_id' );
	$data                = array_intersect_key( wp_parse_args( $data, $defaults ), array_flip( $allowed_data_fields ) );

	$errors = new WP_Error();

	/**
	 * Fires when data should be validated for a site prior to inserting or updating in the database.
	 *
	 * Plugins should amend the `$errors` object via its `WP_Error::add()` method.
	 *
	 * @since 5.1.0
	 *
	 * @param WP_Error     $errors   Error object to add validation errors to.
	 * @param array        $data     Associative array of complete site data. See wp_insert_site()
	 *                               for the included data.
	 * @param WP_Site|null $old_site The old site object if the data belongs to a site being updated,
	 *                               or null if it is a new site being inserted.
	 */
	do_action( 'wp_validate_site_data', $errors, $data, $old_site );

	if ( ! empty( $errors->errors ) ) {
		return $errors;
	}

	// Prepare for database.
	$data['site_id'] = $data['network_id'];
	unset( $data['network_id'] );

	return $data;
}
```

## История изменений

- 5.1.0 — Introduced.

## Связанные

Использует: [`wp_parse_args`](https://chugunov.pro/api-wordpress/functions/wp_parse_args/), [`apply_filters`](https://chugunov.pro/api-wordpress/functions/apply_filters/), [`do_action`](https://chugunov.pro/api-wordpress/functions/do_action/), `WP_Error::__construct`.
Используется в: [`wp_insert_site`](https://chugunov.pro/api-wordpress/functions/wp_insert_site/), [`wp_update_site`](https://chugunov.pro/api-wordpress/functions/wp_update_site/).

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/wp_prepare_site_data/
