Make WordPress Core

Opened 12 years ago

Closed 11 years ago

#19927 closed defect (bug) (duplicate)

Improve support escaping a shortcode tag

Reported by: bobbingwide's profile bobbingwide Owned by:
Milestone: Priority: normal
Severity: normal Version: 3.3.1
Component: Shortcodes Keywords: has-patch needs-testing
Focuses: Cc:

Description (last modified by SergeyBiryukov)

In do_shortcode_tag() there is some code that allows a shortcode to be escaped. It is commented with
// allow [[foo]] syntax for escaping a tag
This code is fine if do_shortcode() is only invoked once on a particular chunk of data.

But if the code is run more than once then the 'escaped' shortcode once again gets selected for processing and the shortcode is expanded.
e.g. [ [ caption ] ] will be 'escaped' to [ caption ] which then gets processed.

Although this multiple invocation does not normally happen in vanilla WordPress, it is very easy to cause it to occur.

In my case I noticed the problem since I had added the filter for 'the_content' with a different priority from the WordPress default.
e.g. add_filter( 'the_content', 'do_shortcode'); I'd missed the '11'.

Having removed that offending line of code I then discovered that Artisteer generated themes call get_the_excerpt() as well as the_excerpt() AND I'd added do_shortcode for both these filters.

The fix is simple. Instead of simply removing the outer square brackets, ensure that the first left square bracket is the escaped character [

Attachments (1)

shortcodes.php.19927.diff (366 bytes) - added by bobbingwide 12 years ago.
patch for ticket #19927 - use [ instead of '[' to prevent further shortcode expansion

Download all attachments as: .zip

Change History (4)

12 years ago

patch for ticket #19927 - use [ instead of '[' to prevent further shortcode expansion

#1 @SergeyBiryukov
11 years ago

#26649 was marked as a duplicate.

#2 @SergeyBiryukov
11 years ago

  • Description modified (diff)

#3 @SergeyBiryukov
11 years ago

  • Milestone Awaiting Review deleted
  • Resolution set to duplicate
  • Status changed from new to closed

Duplicate of #26649.

Note: See TracTickets for help on using tickets.