# wp_check_comment_data()

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

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

## Сигнатура

```php
wp_check_comment_data( array $comment_data ): int|string|WP_Error
```

## Описание

Проверяет, проходят ли данные комментария внутренние проверки и нет ли в них запрещённого содержимого.

## Параметры

- `$comment_data` `array` — обязательный. Массив аргументов для вставки комментария.

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

`int|string|WP_Error` — 0|1|'spam'|'trash' WP_Error

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

Файл: `wp-includes/comment.php:1294`

```php
function wp_check_comment_data( $comment_data ) {
	global $wpdb;

	if ( ! empty( $comment_data['user_id'] ) ) {
		$user        = get_userdata( $comment_data['user_id'] );
		$post_author = (int) $wpdb->get_var(
			$wpdb->prepare(
				"SELECT post_author FROM $wpdb->posts WHERE ID = %d LIMIT 1",
				$comment_data['comment_post_ID']
			)
		);
	}

	if ( isset( $user ) && ( $comment_data['user_id'] === $post_author || $user->has_cap( 'moderate_comments' ) ) ) {
		// The author and the admins get respect.
		$approved = 1;
	} else {
		// Everyone else's comments will be checked.
		if ( check_comment(
			$comment_data['comment_author'],
			$comment_data['comment_author_email'],
			$comment_data['comment_author_url'],
			$comment_data['comment_content'],
			$comment_data['comment_author_IP'],
			$comment_data['comment_agent'],
			$comment_data['comment_type']
		) ) {
			$approved = 1;
		} else {
			$approved = 0;
		}

		if ( wp_check_comment_disallowed_list(
			$comment_data['comment_author'],
			$comment_data['comment_author_email'],
			$comment_data['comment_author_url'],
			$comment_data['comment_content'],
			$comment_data['comment_author_IP'],
			$comment_data['comment_agent']
		) ) {
			$approved = EMPTY_TRASH_DAYS ? 'trash' : 'spam';
		}
	}

	/**
	 * Filters a comment's approval status before it is set.
	 *
	 * @since 2.1.0
	 * @since 4.9.0 Returning a WP_Error value from the filter will short-circuit comment insertion
	 *              and allow skipping further processing.
	 *
	 * @param int|string|WP_Error $approved    The approval status. Accepts 1, 0, 'spam', 'trash',
	 *                                         or WP_Error.
	 * @param array               $commentdata Comment data.
	 */
	return apply_filters( 'pre_comment_approved', $approved, $comment_data );
}
```

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

- 6.7.0 — Introduced.

## Связанные

Использует: [`wp_check_comment_disallowed_list`](https://chugunov.pro/api-wordpress/functions/wp_check_comment_disallowed_list/), [`check_comment`](https://chugunov.pro/api-wordpress/functions/check_comment/), [`get_userdata`](https://chugunov.pro/api-wordpress/functions/get_userdata/), [`apply_filters`](https://chugunov.pro/api-wordpress/functions/apply_filters/), `wpdb::get_var`, `wpdb::prepare`.
Используется в: [`wp_new_comment`](https://chugunov.pro/api-wordpress/functions/wp_new_comment/), [`wp_allow_comment`](https://chugunov.pro/api-wordpress/functions/wp_allow_comment/).

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