Make WordPress Core

Changeset 48960


Ignore:
Timestamp:
09/09/2020 02:33:22 AM (4 years ago)
Author:
SergeyBiryukov
Message:

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.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/class-wp-query.php

    r48816 r48960  
    760760        }
    761761
    762         if ( ! is_scalar( $qv['p'] ) || $qv['p'] < 0 ) {
     762        if ( ! is_scalar( $qv['p'] ) || (int) $qv['p'] < 0 ) {
    763763            $qv['p']     = 0;
    764764            $qv['error'] = '404';
Note: See TracChangeset for help on using the changeset viewer.