[wp-trac] [WordPress Trac] #55222: PHP Warning when using 'do_parse_request' filter with '__return_false'
WordPress Trac
noreply at wordpress.org
Tue Feb 22 04:05:19 UTC 2022
#55222: PHP Warning when using 'do_parse_request' filter with '__return_false'
--------------------------+-----------------------------
Reporter: dd32 | Owner: (none)
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Query | Version:
Severity: minor | Keywords:
Focuses: |
--------------------------+-----------------------------
When disabling request parsing via the `do_parse_request` filter, if
you're simply disabling the parsing entirely instead of replacing, you end
up with a PHP Warning:
{{{
E_WARNING: array_keys() expects parameter 1 to be array, null given in wp-
includes/class-wp.php:548
}}}
This can be reproduced by this:
{{{
add_filter( 'do_parse_request', '__return_false' );
}}}
Upon looking at the `WP` class, it appears that the `query_vars` property
isn't initialised to an `array()` [https://github.com/dd32/wordpress-
develop/blob/trunk/src/wp-includes/class-wp.php#L144-L150 until after the
above filter is called], but [https://github.com/dd32/wordpress-
develop/blob/trunk/src/wp-includes/class-wp.php#L546-L548 is then expected
to be set to an array] in the [https://github.com/dd32/wordpress-
develop/blob/trunk/src/wp-includes/class-wp.php#L758-L760 following
function calls].
It seems safe to me to simply pre-set this to an empty array, and the
other class properties while we're at it.
Example workaround: https://meta.trac.wordpress.org/changeset/11592
See PR.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/55222>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list