[wp-trac] [WordPress Trac] #33452: wp_dropdown_categories doesn't respect show_option_all
WordPress Trac
noreply at wordpress.org
Thu Aug 20 18:37:21 UTC 2015
#33452: wp_dropdown_categories doesn't respect show_option_all
-------------------------------------+--------------------
Reporter: dfellini | Owner:
Type: defect (bug) | Status: new
Priority: normal | Milestone: 4.3.1
Component: Taxonomy | Version: 4.3
Severity: normal | Resolution:
Keywords: has-patch needs-testing | Focuses:
-------------------------------------+--------------------
Changes (by boonebgorges):
* keywords: => has-patch needs-testing
* milestone: Awaiting Review => 4.3.1
Comment:
Hi dfellini - Welcome to Trac, and thanks for the report!
I've confirmed the issue. It dates from [32484]. This odd bug arises due
to an unfortunate combination of (a) the way that the 'selected' argument
works, and (b) the way PHP interprets `==` between an integer and a
string.
More specifically: The default 'selected' value in
`wp_dropdown_categories()` is `0`. In
`Walker_CategoryDropdown::start_el()`, we do a comparison `if (
$category->{$value_field} == $args['selected'] )`. Because you're using
`slug` as your `'value_field'`, the check looks something like this: `if (
'connecticut' == 0 )`. The problem is that PHP resolves `'connecticut' ==
0` to `true`; see http://stackoverflow.com/questions/6843030/why-does-php-
consider-0-to-be-equal-to-a-string for some explanation. So each
`<option>` in your dropdown is getting `selected="selected"`.
The most straightforward fix is to cast everything to a string, and to do
a strict comparison. See [attachment:33452.diff]. Can you have a look to
see whether this solves your problem?
This is going to be a relatively large annoyance for people who are
relying on the default value of 'selected' in `wp_dropdown_categories()`,
so I'm moving the ticket to 4.3.1 to address in the next minor release.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/33452#comment:2>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list