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

In this article

Determines whether an attribute is allowed.

Parameters

$namestringrequired
The attribute name. Passed by reference. Returns empty string when not allowed.
$valuestringrequired
The attribute value. Passed by reference. Returns a filtered value.
$wholestringrequired
The name=value input. Passed by reference. Returns filtered input.
$vlessstringrequired
Whether the attribute is valueless. Use 'y' or 'n'.
$elementstringrequired
The name of the element to which this attribute belongs.
$allowed_htmlarrayrequired
The full list of allowed elements and attributes.

Return

bool Whether or not the attribute is allowed.

Source

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; } 

Changelog

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

User Contributed Notes

You must log in before being able to contribute a note or feedback.