Opened 2 years ago
Last modified 15 months ago
#15694 new defect (bug)
Caption Shortcode I/O Intolerant of "]" Char
| Reported by: |
|
Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | Future Release |
| Component: | Shortcodes | Version: | 3.0.1 |
| Severity: | normal | Keywords: | |
| Cc: | hidgw |
Description
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:2
solarissmoke — 2 years ago
For Reference: Do NOT try parsing with regular expressions
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.

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.