Opened 4 years ago
Closed 4 years ago
#9405 closed defect (bug) (invalid)
Shortcode parameter names can't have dashes in them
| Reported by: |
|
Owned by: |
|
|---|---|---|---|
| Priority: | lowest | Milestone: | |
| Component: | General | Version: | 2.8 |
| Severity: | minor | Keywords: | needs-patch |
| Cc: |
Description
I expected this to work, but it doesn't:
[tag my-param="value" foo="bar"]Hello world![/tag]
The passed array looks like this:
array( 0 => 'my-param="value"', 'foo' => 'bar' );
Change History (4)
it's supposed to "look" like html attributes. curious to know if dash is a valid character for html attributes before closing as invalid...
Some HTML Trivia:
- attribute names are not case sensitive. (HTML 2.0)
- The `NAMELEN' parameter in the SGML declaration (section SGML Declaration for HTML) limits the length of an attribute value to 1024 characters.
- HTML allows CDATA attributes to be unquoted provided the attribute value contains only letters (a to z and A to Z), digits (0 to 9), hyphens (ASCII decimal 45) or, periods (ASCII decimal 46)
- An attribute specification consists of a name, an "=" and a value specification. The name refers to an item in an ATTLIST declaration.
I see no attribute name in HTML (2.0, 3.2, 4.1 & xhtml 1.0) that conatins a dash or dot.
- Milestone Future Release deleted
- Resolution set to invalid
- Status changed from new to closed
Note: See
TracTickets for help on using
tickets.

function is shortcode_parse_atts() in wp-includes/shortcodes.php
the parsing is done by regular expressions.
word limiters are used, I guess dashes are not supported by them.
I wonder if it makes sense. This problem can for easier besolved by clarifying the documentation, the regular expression pattern is already quite complex.