diff --git a/src/wp-includes/shortcodes.php b/src/wp-includes/shortcodes.php index 728ec26484..465293d9f9 100644 --- a/src/wp-includes/shortcodes.php +++ b/src/wp-includes/shortcodes.php @@ -488,9 +488,8 @@ function get_shortcode_atts_regex() { * retrieval of the attributes, since all attributes have to be known. * * @since 2.5.0 - * @since 5.3.0 Added support of a full shortcode input. * - * @param string $text Any single shortcode of any format or key/value pair string. + * @param string $text * @return array|string List of attribute values. * Returns empty array if trim( $text ) == '""'. * Returns empty string if trim( $text ) == ''. @@ -499,13 +498,7 @@ function get_shortcode_atts_regex() { function shortcode_parse_atts( $text ) { $atts = array(); $pattern = get_shortcode_atts_regex(); - $text = trim( preg_replace( "/[\x{00a0}\x{200b}]+/u", ' ', $text ) ); - - // Remove everything but attributes from shortcode. - if ( preg_match( '#^\[[\w-]+([^\]]*?)\/?\]#', $text, $matches ) ) { - $text = $matches[1]; - } - + $text = preg_replace( "/[\x{00a0}\x{200b}]+/u", ' ', $text ); if ( preg_match_all( $pattern, $text, $match, PREG_SET_ORDER ) ) { foreach ( $match as $m ) { if ( ! empty( $m[1] ) ) { diff --git a/tests/phpunit/tests/shortcode.php b/tests/phpunit/tests/shortcode.php index b836a590cc..a978779c9a 100644 --- a/tests/phpunit/tests/shortcode.php +++ b/tests/phpunit/tests/shortcode.php @@ -740,7 +740,7 @@ EOF; } function data_whole_posts() { - require_once DIR_TESTDATA . '/formatting/whole-posts.php'; + require_once( DIR_TESTDATA . '/formatting/whole-posts.php' ); return data_whole_posts(); } @@ -972,136 +972,4 @@ EOF; ); $this->assertEquals( 'test-shortcode-tag', $this->tagname ); } - - /** - * Testing the `shortcode_parse_atts()` function. - * - * @ticket 47863 - * - * @covers ::shortcode_parse_atts - * @dataProvider data_shortcode_parse_atts - * - * @param string $text A single shortcode format or key/value pair string. - * @param string|array $expected Expected results. - */ - public function test_shortcode_parse_atts( $text, $expected ) { - $actual = shortcode_parse_atts( $text ); - $this->assertSame( $expected, $actual ); - } - - /** - * Data provider for `test_shortcode_parse_atts()`. - * - * @return array { - * @type array { - * @type string $text A single shortcode format or key/value pair string. - * @type string|array $expected The expected result. - * } - * } - */ - public function data_shortcode_parse_atts() { - - return array( - array( - '', - '', - ), - array( - ' ', - '', - ), - array( - '""', - array(), - ), - array( - '\'\'', - array(), - ), - array( - '[unittest]', - '', - ), - array( - '[unitest]Unit Test[/unittest]', - '', - ), - array( - '[unittest title="unittest" link="https://unit.test/"]', - array( - 'title' => 'unittest', - 'link' => 'https://unit.test/', - ), - ), - array( - '[unittest title="unittest" link="https://unit.test/"/]', - array( - 'title' => 'unittest', - 'link' => 'https://unit.test/', - ), - ), - array( - '[unit_test title="unittest" link="https://unit.test/"/]', - array( - 'title' => 'unittest', - 'link' => 'https://unit.test/', - ), - ), - array( - '[unit-test title="unittest" link="https://unit.test/"/]', - array( - 'title' => 'unittest', - 'link' => 'https://unit.test/', - ), - ), - array( - '[unittest link=https://unit.test/ /]', - array( - 'link' => 'https://unit.test/', - ), - ), - array( - '[unittest link=https://unit.test/ ]', - array( - 'link' => 'https://unit.test/', - ), - ), - array( - '[unittest link=https://unit.test/]', - array( - 'link' => 'https://unit.test', - ), - ), - array( - '[unittest link https://unit.test/ /]', - array( - 'link', - 'https://unit.test/', - ), - ), - array( - '[unittest title="unittest" link="https://unit.test/"]Unit Test[/unittest]', - array( - 'title' => 'unittest', - 'link' => 'https://unit.test/', - ), - ), - array( - '[unittest title="unittest" link="https://unit.test/"][unit_test foo="bar" bar="foo"][/unittest]', - array( - 'title' => 'unittest', - 'link' => 'https://unit.test/', - ), - ), - array( - 'title="unittest" link="https://unit.test/"', - array( - 'title' => 'unittest', - 'link' => 'https://unit.test/', - ), - ), - ); - - } - }