# wp_kses_attr_check()

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

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

## Сигнатура

```php
wp_kses_attr_check( string $name, string $value, string $whole, string $vless, string $element, array $allowed_html ): bool
```

## Описание

Определяет, разрешён ли атрибут.

## Параметры

- `$name` `string` — обязательный. Имя атрибута. Передаётся по ссылке. Возвращает пустую строку, если атрибут не разрешён.
- `$value` `string` — обязательный. Значение атрибута. Передаётся по ссылке. Возвращает отфильтрованное значение.
- `$whole` `string` — обязательный. Входные данные вида name=value. Передаются по ссылке. Возвращают отфильтрованные входные данные.
- `$vless` `string` — обязательный. Является ли атрибут без значения. Используйте 'y' или 'n'.
- `$element` `string` — обязательный. Имя элемента, которому принадлежит этот атрибут.
- `$allowed_html` `array` — обязательный. Полный список разрешённых элементов и атрибутов.

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

`bool`

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

Файл: `wp-includes/kses.php:1519`

```php
function wp_kses_attr_check( &$name, &$value, &$whole, $vless, $element, $allowed_html ) {
	$name_low    = strtolower( $name );
	$element_low = strtolower( $element );

	if ( ! isset( $allowed_html[ $element_low ] ) ) {
		$name  = '';
		$value = '';
		$whole = '';
		return false;
	}

	$allowed_attr = $allowed_html[ $element_low ];

	if ( ! isset( $allowed_attr[ $name_low ] ) || '' === $allowed_attr[ $name_low ] ) {
		/*
		 * Allow `data-*` attributes.
		 *
		 * When specifying `$allowed_html`, the attribute name should be set as
		 * `data-*` (not to be mixed with the HTML 4.0 `data` attribute, see
		 * https://www.w3.org/TR/html40/struct/objects.html#adef-data).
		 *
		 * Note: the attribute name should only contain `A-Za-z0-9_-` chars.
		 */
		if ( str_starts_with( $name_low, 'data-' ) && ! empty( $allowed_attr['data-*'] )
			&& preg_match( '/^data-[a-z0-9_-]+$/', $name_low, $match )
		) {
			/*
			 * Add the whole attribute name to the allowed attributes and set any restrictions
			 * for the `data-*` attribute values for the current element.
			 */
			$allowed_attr[ $match[0] ] = $allowed_attr['data-*'];
		} else {
			$name  = '';
			$value = '';
			$whole = '';
			return false;
		}
	}

	if ( 'style' === $name_low ) {
		$new_value = safecss_filter_attr( $value );

		if ( empty( $new_value ) ) {
			$name  = '';
			$value = '';
			$whole = '';
			return false;
		}

		$whole = str_replace( $value, $new_value, $whole );
		$value = $new_value;
	}

	if ( is_array( $allowed_attr[ $name_low ] ) ) {
		// There are some checks.
		foreach ( $allowed_attr[ $name_low ] as $currkey => $currval ) {
			if ( ! wp_kses_check_attr_val( $value, $vless, $currkey, $currval ) ) {
				$name  = '';
				$value = '';
				$whole = '';
				return false;
			}
		}
	}

	return true;
}
```

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

- 5.0.0 — Added support for data-* wildcard attributes.
- 4.2.3 — Introduced.

## Связанные

Использует: [`safecss_filter_attr`](https://chugunov.pro/api-wordpress/functions/safecss_filter_attr/), [`wp_kses_check_attr_val`](https://chugunov.pro/api-wordpress/functions/wp_kses_check_attr_val/).
Используется в: [`wp_kses_one_attr`](https://chugunov.pro/api-wordpress/functions/wp_kses_one_attr/), [`wp_kses_attr`](https://chugunov.pro/api-wordpress/functions/wp_kses_attr/).

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