Opened 3 months ago
Last modified 3 months ago
#23477 new defect (bug)
r21789 creates a breaking change in behavior for get_submit_button
| Reported by: |
|
Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | Awaiting Review |
| Component: | Administration | Version: | 3.5 |
| Severity: | minor | Keywords: | ui-focus |
| Cc: |
Description (last modified by nacin)
A recent change made to get_submit_button (http://core.trac.wordpress.org/changeset/21789/trunk/wp-admin/includes/template.php) has caused an unwanted change in behavior for a button on a site I maintain. Previously, the string passed as the second argument, $type, was matched against a switch statement with several unique cases. In the event of a non-match in the switch, the default action prior to [21789] was to assign the parameter's value as the $class string without altering it.
The change introduced in [21789] now breaks a string into individual classes, which prevents the use of the unique class names within a string of additional class names. For example, the string button-secondary save-button action used to generate a class string in HTML of button-secondary save-button action, but now generates the unexpected result button save-button action (note lack of '-secondary') because it matches against the following if check on line 1600:
if ( 'secondary' === $t || 'button-secondary' === $t )
It should be noted that the phpdoc associated with the function does not name the use case that I was employing, but that the behavior of passing in a space-separated class string has previously resulted in the string being passed through untouched (and the comment here indicates it was known and expected behavior (http://core.trac.wordpress.org/browser/trunk/wp-admin/includes/template.php?rev=21781#L1649), and this is no longer the case. Not sure if this is worth a programmatic fix, or if it might just be worth noting in the function docblock that certain classes are now 'reserved' and cannot be passed into the $type string.
Change History (6)
- Summary changed from Change 21789 creates a breaking change in behavior for get_submit_button to Change #21789 creates a breaking change in behavior for get_submit_button
- Description modified (diff)
- Summary changed from Change #21789 creates a breaking change in behavior for get_submit_button to r21789 creates a breaking change in behavior for get_submit_button
Clarification of above example:
Function call:
$button_str = get_submit_button( __( 'delete selected users' ), 'button-secondary save-button action', false, false, array( 'id' => 'doaction' ) );
Expected value of $button_str:
<input type="submit" name="" id="doaction" class="button-secondary save-button action" value="delete selected users">
Actual value of $button_str:
<input type="submit" name="" id="doaction" class="button save-button action" value="delete selected users">
comment:5
SergeyBiryukov — 3 months ago
- Component changed from Template to Administration
- Keywords ui-focus added
- Version changed from trunk to 3.5
Still a little confused, perhaps because the ticket sounds like it's a general breakage. What I'm seeing here is that button-secondary and secondary will silently not come through as classes if specified in type, because they are now replaced by just using the generic button class.

Could you provide a specific example, with expected and actual results? Could make it easier to understand.