Make WordPress Core

Opened 3 years ago

Last modified 2 years ago

#15694 new defect (bug)

Caption Shortcode I/O Intolerant of "]" Char

Reported by: miqrogroove Owned by:
Milestone: Future Release Priority: normal
Severity: normal Version: 3.0.1
Component: Shortcodes Keywords:
Focuses: Cc:


I've discovered that the "]" character can only be used in the media library itself. If I try to insert an image into a post using a caption like "[Test Caption]" then the post editor inserts three double quotes into the HTML attribute, invalidating the page markup. D:

[caption id="attachment_3" align="alignnone" width="300" caption="[Test Caption"]"]

In testing the output end of things, if I remove the extra double quote directly in MySQL, then the caption is not rendered at all on the post. This suggests there is more than one error in the code that is causing this problem. I was able to reproduce these symptoms on both versions I tested, 2.9.2 and 3.0.1.

Change History (5)

comment:1 nacin3 years ago

  • Milestone changed from Awaiting Review to Future Release

comment:2 solarissmoke3 years ago

The problem is with the regex in get_shortcode_regex() which assumes that the first ] it comes across is the end of a shortcode tag, and it ignores the rest, thus breaking things.

For now I've added a note in the codex saying that the parser can't handle square brackets in attributes. Can't think of a way to fix this without making the regex a whole lot more complicated.

comment:4 hidgw2 years ago

  • Cc hidgw added

comment:5 azaozz2 years ago

The shortcodes work similarly to HTML with [ and ] being the equivalent of < and >. In that terms shortcodes cannot contain square brackets the same way HTML tags cannot contain "less than" and "greater than" chars. If they must be used, they need to be encoded/replaced with entities.

Note: See TracTickets for help on using tickets.