# wp_validate_site_data()

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

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

## Сигнатура

```php
wp_validate_site_data( WP_Error $errors, array $data, WP_Site|null $old_site = null )
```

## Описание

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

## Параметры

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

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

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

```php
function wp_validate_site_data( $errors, $data, $old_site = null ) {
	// A domain must always be present.
	if ( empty( $data['domain'] ) ) {
		$errors->add( 'site_empty_domain', __( 'Site domain must not be empty.' ) );
	}

	// A path must always be present.
	if ( empty( $data['path'] ) ) {
		$errors->add( 'site_empty_path', __( 'Site path must not be empty.' ) );
	}

	// A network ID must always be present.
	if ( empty( $data['network_id'] ) ) {
		$errors->add( 'site_empty_network_id', __( 'Site network ID must be provided.' ) );
	}

	// Both registration and last updated dates must always be present and valid.
	$date_fields = array( 'registered', 'last_updated' );
	foreach ( $date_fields as $date_field ) {
		if ( empty( $data[ $date_field ] ) ) {
			$errors->add( 'site_empty_' . $date_field, __( 'Both registration and last updated dates must be provided.' ) );
			break;
		}

		// Allow '0000-00-00 00:00:00', although it be stripped out at this point.
		if ( '0000-00-00 00:00:00' !== $data[ $date_field ] ) {
			$month      = substr( $data[ $date_field ], 5, 2 );
			$day        = substr( $data[ $date_field ], 8, 2 );
			$year       = substr( $data[ $date_field ], 0, 4 );
			$valid_date = wp_checkdate( $month, $day, $year, $data[ $date_field ] );
			if ( ! $valid_date ) {
				$errors->add( 'site_invalid_' . $date_field, __( 'Both registration and last updated dates must be valid dates.' ) );
				break;
			}
		}
	}

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

	// If a new site, or domain/path/network ID have changed, ensure uniqueness.
	if ( ! $old_site
		|| $data['domain'] !== $old_site->domain
		|| $data['path'] !== $old_site->path
		|| $data['network_id'] !== $old_site->network_id
	) {
		if ( domain_exists( $data['domain'], $data['path'], $data['network_id'] ) ) {
			$errors->add( 'site_taken', __( 'Sorry, that site already exists!' ) );
		}
	}
}
```

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

- 5.1.0 — Introduced.

## Связанные

Использует: [`wp_checkdate`](https://chugunov.pro/api-wordpress/functions/wp_checkdate/), [`domain_exists`](https://chugunov.pro/api-wordpress/functions/domain_exists/), [`__`](https://chugunov.pro/api-wordpress/functions/__/).

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