WordPress.org

Make WordPress Core

Changeset 36098


Ignore:
Timestamp:
12/26/2015 04:47:58 AM (5 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.