Make WordPress Core

Changeset 36098


Ignore:
Timestamp:
12/26/2015 04:47:58 AM (11 years ago)
Author:
dd32
Message:

Shortcodes: = is a reserved character in shortcode names, mark it as such.

This allows for shortcodes such as [shortcode=attribute] to work, which while never intentionally supported were widely used in the pre-shortcode days.

Merges [36097] to the 4.4 branch, minus a string change.
Props aaroncampbell.
Fixes #34939.

Location:
branches/4.4
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/4.4/src/wp-includes/formatting.php

    r36037 r36098  
    217217        // Look for shortcodes and HTML elements.
    218218
    219         preg_match_all( '@\[/?([^<>&/\[\]\x00-\x20]++)@', $text, $matches );
     219        preg_match_all( '@\[/?([^<>&/\[\]\x00-\x20=]++)@', $text, $matches );
    220220        $tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] );
    221221        $found_shortcodes = ! empty( $tagnames );
  • branches/4.4/src/wp-includes/shortcodes.php

    r35543 r36098  
    9696        }
    9797
    98         if ( 0 !== preg_match( '@[<>&/\[\]\x00-\x20]@', $tag ) ) {
     98        if ( 0 !== preg_match( '@[<>&/\[\]\x00-\x20=]@', $tag ) ) {
    9999                /* translators: %s: shortcode name */
    100100                $message = sprintf( __( 'Invalid shortcode name: %s. Do not use spaces or reserved characters: & / < > [ ]' ), $tag );
    … …  
    211211
    212212        // Find all registered tag names in $content.
    213         preg_match_all( '@\[([^<>&/\[\]\x00-\x20]++)@', $content, $matches );
     213        preg_match_all( '@\[([^<>&/\[\]\x00-\x20=]++)@', $content, $matches );
    214214        $tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] );
    215215
    … …  
    579579
    580580        // Find all registered tag names in $content.
    581         preg_match_all( '@\[([^<>&/\[\]\x00-\x20]++)@', $content, $matches );
     581        preg_match_all( '@\[([^<>&/\[\]\x00-\x20=]++)@', $content, $matches );
    582582        $tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] );
    583583
  • branches/4.4/tests/phpunit/tests/shortcode.php

    r35244 r36098  
    648648        }
    649649
     650        /**
     651         * @ticket 34939
     652         *
     653         * Test the (not recommended) [shortcode=XXX] format
     654         */
     655        function test_unnamed_attribute() {
     656                $out = do_shortcode('[dumptag=https://wordpress.org/]');
     657                $expected = "0 = =https://wordpress.org\n";
     658                $this->assertEquals($expected, $out);
     659        }
    650660}
Note: See TracChangeset for help on using the changeset viewer.