Alert: 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.

_wptexturize_pushpop_element() WordPress Function

The wptexturize_pushpop_element() function is used to push or pop an element from the global stack of texturize filters. This function is primarily used by plugins and themes to disable or enable the wptexturize filter for certain parts of content.

_wptexturize_pushpop_element( string $text, string[] $stack, string[] $disabled_elements ) #

Searches for disabled element tags. Pushes element to stack on tag open and pops on tag close.


Description

Assumes first char of $text is tag opening and last char is tag closing. Assumes second char of $text is optionally / to indicate closing as in </html>.


Top ↑

Parameters

$text

(string)(Required)Text to check. Must be a tag like <html> or [shortcode].

$stack

(string[])(Required)Array of open tag elements.

$disabled_elements

(string[])(Required)Array of tag names to match against. Spaces are not allowed in tag names.


Top ↑

Source

File: wp-includes/formatting.php

function _wptexturize_pushpop_element( $text, &$stack, $disabled_elements ) {
	// Is it an opening tag or closing tag?
	if ( isset( $text[1] ) && '/' !== $text[1] ) {
		$opening_tag = true;
		$name_offset = 1;
	} elseif ( 0 === count( $stack ) ) {
		// Stack is empty. Just stop.
		return;
	} else {
		$opening_tag = false;
		$name_offset = 2;
	}

	// Parse out the tag name.
	$space = strpos( $text, ' ' );
	if ( false === $space ) {
		$space = -1;
	} else {
		$space -= $name_offset;
	}
	$tag = substr( $text, $name_offset, $space );

	// Handle disabled tags.
	if ( in_array( $tag, $disabled_elements, true ) ) {
		if ( $opening_tag ) {
			/*
			 * This disables texturize until we find a closing tag of our type
			 * (e.g. <pre>) even if there was invalid nesting before that.
			 *
			 * Example: in the case <pre>sadsadasd</code>"baba"</pre>
			 *          "baba" won't be texturized.
			 */

			array_push( $stack, $tag );
		} elseif ( end( $stack ) == $tag ) {
			array_pop( $stack );
		}
	}
}


Top ↑

Changelog

Changelog
VersionDescription
2.9.0Introduced.

The content displayed on this page has been created in part by processing WordPress source code files which are made available under the GPLv2 (or a later version) license by theĀ Free Software Foundation. In addition to this, the content includes user-written examples and information. All material is subject to review and curation by the WPPaste.com community.