From f6f117a0a977ec9547b9b43779e448053c927e72 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Wed, 9 Sep 2020 02:33:22 +0000 Subject: [PATCH] Code Modernization: Correct the check for negative post IDs in `WP_Query::parse_query()` to work as expected on PHP 8. PHP 8 changes the way string to number comparisons are performed: https://wiki.php.net/rfc/string_to_number_comparison In particular, checking if an empty string is less than zero in PHP 8 evaluates to `true`, not `false`. For `WP_Query`, this resulted in unintentionally returning a 404 error for most of front-end requests, instead of the relevant content. By explicitly casting the value to `int`, we make sure to compare both values as numbers, rather than a string and a number. Follow-up to [38288]. Props trepmal. See #50913. git-svn-id: https://develop.svn.wordpress.org/trunk@48960 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-query.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-includes/class-wp-query.php b/src/wp-includes/class-wp-query.php index 49ac5540c5..a2451bcd01 100644 --- a/src/wp-includes/class-wp-query.php +++ b/src/wp-includes/class-wp-query.php @@ -759,7 +759,7 @@ class WP_Query { $this->is_favicon = true; } - if ( ! is_scalar( $qv['p'] ) || $qv['p'] < 0 ) { + if ( ! is_scalar( $qv['p'] ) || (int) $qv['p'] < 0 ) { $qv['p'] = 0; $qv['error'] = '404'; } else {