Advertisements

shortcode_unautop

Definition:
function shortcode_unautop( $pee ) {}

Don’t auto-p wrap shortcodes that stand alone
Ensures that shortcodes are not wrapped in <p>…</p>.

Parameters

  • string $pee: The content.

Return values

returns:The filtered content.

Source code

function shortcode_unautop( $pee ) {

	global $shortcode_tags;



	if ( empty( $shortcode_tags ) || !is_array( $shortcode_tags ) ) {

		return $pee;

	}



	$tagregexp = join( '|', array_map( 'preg_quote', array_keys( $shortcode_tags ) ) );



	$pattern =

		  '/'

		. '<p>'                              // Opening paragraph

		. '\\s*+'                            // Optional leading whitespace

		. '('                                // 1: The shortcode

		.     '\\['                          // Opening bracket

		.     "($tagregexp)"                 // 2: Shortcode name

		.     '\\b'                          // Word boundary

		                                     // Unroll the loop: Inside the opening shortcode tag

		.     '[^\\]\\/]*'                   // Not a closing bracket or forward slash

		.     '(?:'

		.         '\\/(?!\\])'               // A forward slash not followed by a closing bracket

		.         '[^\\]\\/]*'               // Not a closing bracket or forward slash

		.     ')*?'

		.     '(?:'

		.         '\\/\\]'                   // Self closing tag and closing bracket

		.     '|'

		.         '\\]'                      // Closing bracket

		.         '(?:'                      // Unroll the loop: Optionally, anything between the opening and closing shortcode tags

		.             '[^\\[]*+'             // Not an opening bracket

		.             '(?:'

		.                 '\\[(?!\\/\\2\\])' // An opening bracket not followed by the closing shortcode tag

		.                 '[^\\[]*+'         // Not an opening bracket

		.             ')*+'

		.             '\\[\\/\\2\\]'         // Closing shortcode tag

		.         ')?'

		.     ')'

		. ')'

		. '\\s*+'                            // optional trailing whitespace

		. '<\\/p>'                           // closing paragraph

		. '/s';



	return preg_replace( $pattern, '$1', $pee );

}

2865

Advertisements

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: