Make WordPress Core

Opened 5 years ago

Last modified 16 months ago

#23477 closed defect (bug)

Change 21789 creates a breaking change in behavior for get_submit_button — at Initial Version

Reported by: vhauri Owned by:
Milestone: 4.8 Priority: normal
Severity: normal Version: 3.5
Component: Administration Keywords: has-patch
Focuses: docs Cc:


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 (0)

Note: See TracTickets for help on using tickets.