wpseek.com
A WordPress-centric search engine for devs and theme authors



apply_shortcodes › WordPress Function

Since5.4.0
Deprecatedn/a
apply_shortcodes ( $content, $ignore_html = false )
Parameters: (2)
  • (string) $content Content to search for shortcodes.
    Required: Yes
  • (bool) $ignore_html When true, shortcodes inside HTML elements will be skipped. Default false.
    Required: No
    Default: false
Returns:
  • (string) Content with shortcodes filtered out.
Defined at:
Codex:

Searches content for shortcodes and filter shortcodes through their hooks.

If there are no shortcode tags defined, then the content will be returned without any filtering. This might cause issues when plugins are disabled but the shortcode will still show up in the post or content.


Source

function apply_shortcodes( $content, $ignore_html = false ) {
	global $shortcode_tags;

	if ( false === strpos( $content, '[' ) ) {
		return $content;
	}

	if ( empty( $shortcode_tags ) || ! is_array( $shortcode_tags ) ) {
		return $content;
	}

	// Find all registered tag names in $content.
	preg_match_all( '@\[([^<>&/\[\]\x00-\x20=]++)@', $content, $matches );
	$tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] );

	if ( empty( $tagnames ) ) {
		return $content;
	}

	$content = do_shortcodes_in_html_tags( $content, $ignore_html, $tagnames );

	$pattern = get_shortcode_regex( $tagnames );
	$content = preg_replace_callback( "/$pattern/", 'do_shortcode_tag', $content );

	// Always restore square braces so we don't break things like <!--[if IE ]>.
	$content = unescape_invalid_shortcodes( $content );

	return $content;
}