WP_HTML_Tag_Processor::get_enqueued_attribute_value( string $comparable_name ): string|boolean|null

In this article

This function’s access is marked private. This means it is not intended for use by plugin or theme developers, only in other core functions. It is listed here for completeness.

Return the enqueued value for a given attribute, if one exists.

Description

Enqueued updates can take different data types:

  • If an update is enqueued and is boolean, the return will be true
  • If an update is otherwise enqueued, the return will be the string value of that update.
  • If an attribute is enqueued to be removed, the return will be null to indicate that.
  • If no updates are enqueued, the return will be false to differentiate from "removed."

Parameters

$comparable_namestringrequired
The attribute name in its comparable form.

Return

string|boolean|null Value of enqueued update if present, otherwise false.

Source

usort( $this->lexical_updates, array( self::class, 'sort_start_ascending' ) );

$bytes_already_copied = 0;
$output_buffer        = '';
foreach ( $this->lexical_updates as $diff ) {
	$shift = strlen( $diff->text ) - $diff->length;

	// Adjust the cursor position by however much an update affects it.
	if ( $diff->start < $this->bytes_already_parsed ) {
		$this->bytes_already_parsed += $shift;
	}

	// Accumulate shift of the given pointer within this function call.
	if ( $diff->start < $shift_this_point ) {
		$accumulated_shift_for_given_point += $shift;
	}

	$output_buffer       .= substr( $this->html, $bytes_already_copied, $diff->start - $bytes_already_copied );
	$output_buffer       .= $diff->text;
	$bytes_already_copied = $diff->start + $diff->length;
}

$this->html = $output_buffer . substr( $this->html, $bytes_already_copied );

/*
 * Adjust bookmark locations to account for how the text
 * replacements adjust offsets in the input document.
 */
foreach ( $this->bookmarks as $bookmark_name => $bookmark ) {
	$bookmark_end = $bookmark->start + $bookmark->length;

	/*
	 * Each lexical update which appears before the bookmark's endpoints
	 * might shift the offsets for those endpoints. Loop through each change
	 * and accumulate the total shift for each bookmark, then apply that
	 * shift after tallying the full delta.
	 */
	$head_delta = 0;
	$tail_delta = 0;

	foreach ( $this->lexical_updates as $diff ) {
		$diff_end = $diff->start + $diff->length;

		if ( $bookmark->start < $diff->start && $bookmark_end < $diff->start ) {
			break;
		}

		if ( $bookmark->start >= $diff->start && $bookmark_end < $diff_end ) {
			$this->release_bookmark( $bookmark_name );
			continue 2;
		}

Changelog

VersionDescription
6.2.0Introduced.

User Contributed Notes

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