Ticket #34939: 34939.diff
File 34939.diff, 3.0 KB (added by , 9 years ago) |
---|
-
src/wp-includes/formatting.php
216 216 217 217 // Look for shortcodes and HTML elements. 218 218 219 preg_match_all( '@\[/?([^<>&/\[\]\x00-\x20 ]++)@', $text, $matches );219 preg_match_all( '@\[/?([^<>&/\[\]\x00-\x20=]++)@', $text, $matches ); 220 220 $tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] ); 221 221 $found_shortcodes = ! empty( $tagnames ); 222 222 $shortcode_regex = $found_shortcodes ? _get_wptexturize_shortcode_regex( $tagnames ) : ''; -
src/wp-includes/shortcodes.php
95 95 return; 96 96 } 97 97 98 if ( 0 !== preg_match( '@[<>&/\[\]\x00-\x20 ]@', $tag ) ) {99 /* translators: %s: shortcode name*/100 $message = sprintf( __( 'Invalid shortcode name: % s. Do not use spaces or reserved characters: & / < > [ ]' ), $tag);98 if ( 0 !== preg_match( '@[<>&/\[\]\x00-\x20=]@', $tag ) ) { 99 /* translators: 1: shortcode name, 2: space separated list of reserved characters */ 100 $message = sprintf( __( 'Invalid shortcode name: %1$s. Do not use spaces or reserved characters: %2$s' ), $tag, '& / < > [ ] =' ); 101 101 _doing_it_wrong( __FUNCTION__, $message, '4.4.0' ); 102 102 return; 103 103 } … … 210 210 return $content; 211 211 212 212 // Find all registered tag names in $content. 213 preg_match_all( '@\[([^<>&/\[\]\x00-\x20 ]++)@', $content, $matches );213 preg_match_all( '@\[([^<>&/\[\]\x00-\x20=]++)@', $content, $matches ); 214 214 $tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] ); 215 215 216 216 if ( empty( $tagnames ) ) { … … 312 312 } 313 313 314 314 $tag = $m[2]; 315 $attr = shortcode_parse_atts( $m[3] ); 315 // Trim '=' from left side of attributes to handle shortcodes in the [shortcode=XXX] format (not a recommended format) 316 $attr = shortcode_parse_atts( ltrim( $m[3], '=' ) ); 316 317 317 318 if ( ! is_callable( $shortcode_tags[ $tag ] ) ) { 318 319 /* translators: %s: shortcode tag */ … … 578 579 return $content; 579 580 580 581 // Find all registered tag names in $content. 581 preg_match_all( '@\[([^<>&/\[\]\x00-\x20 ]++)@', $content, $matches );582 preg_match_all( '@\[([^<>&/\[\]\x00-\x20=]++)@', $content, $matches ); 582 583 $tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] ); 583 584 584 585 if ( empty( $tagnames ) ) { -
tests/phpunit/tests/shortcode.php
647 647 648 648 } 649 649 650 /** 651 * @ticket 34939 652 * 653 * Test the (not recommended) [shortcode=XXX] format 654 */ 655 function test_unnamed_attribute() { 656 $out = do_shortcode('[dumptag=http://wordpress.com/]'); 657 $expected = "0 = http://wordpress.com\n"; 658 $this->assertEquals($expected, $out); 659 } 650 660 }