From 5edba8d697f6f77144c1813267fea473d3901fcc Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Mon, 10 Nov 2025 11:44:12 -0800 Subject: [PATCH 1/3] Only include blogs table columns WP_Date_Query::validate_column() in multisite --- src/wp-includes/class-wp-date-query.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/wp-includes/class-wp-date-query.php b/src/wp-includes/class-wp-date-query.php index 76b70849493dd..3a989668c88c9 100644 --- a/src/wp-includes/class-wp-date-query.php +++ b/src/wp-includes/class-wp-date-query.php @@ -525,11 +525,13 @@ public function validate_column( $column ) { $wpdb->users => array( 'user_registered', ), - $wpdb->blogs => array( + ); + if ( is_multisite() ) { + $known_columns[ $wpdb->blogs ] = array( 'registered', 'last_updated', - ), - ); + ); + } // If it's a known column name, add the appropriate table prefix. foreach ( $known_columns as $table_name => $table_columns ) { From 1d4f92301f726d1a167970e1708ecff004d4ef80 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Mon, 10 Nov 2025 11:50:03 -0800 Subject: [PATCH 2/3] Only include columns for wp_blogs when on multisite --- src/wp-includes/class-wp-date-query.php | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/wp-includes/class-wp-date-query.php b/src/wp-includes/class-wp-date-query.php index 3a989668c88c9..d1bedc823855e 100644 --- a/src/wp-includes/class-wp-date-query.php +++ b/src/wp-includes/class-wp-date-query.php @@ -482,16 +482,23 @@ public function validate_column( $column ) { global $wpdb; $valid_columns = array( - 'post_date', - 'post_date_gmt', - 'post_modified', - 'post_modified_gmt', - 'comment_date', - 'comment_date_gmt', - 'user_registered', - 'registered', - 'last_updated', + 'post_date', // Part of $wpdb->posts. + 'post_date_gmt', // Part of $wpdb->posts. + 'post_modified', // Part of $wpdb->posts. + 'post_modified_gmt', // Part of $wpdb->posts. + 'comment_date', // Part of $wpdb->comments. + 'comment_date_gmt', // Part of $wpdb->comments. + 'user_registered', // Part of $wpdb->users. ); + if ( is_multisite() ) { + $valid_columns = array_merge( + $valid_columns, + array( + 'registered', // Part of $wpdb->blogs. + 'last_updated', // Part of $wpdb->blogs. + ) + ); + } // Attempt to detect a table prefix. if ( ! str_contains( $column, '.' ) ) { From 565896fdc88a83823567b7f14ef3d77c1afae322 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Mon, 10 Nov 2025 11:50:50 -0800 Subject: [PATCH 3/3] Update phpdoc on wpdb to indicate variables for multisite tables may be null --- src/wp-includes/class-wpdb.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/wp-includes/class-wpdb.php b/src/wp-includes/class-wpdb.php index 57abe2ab4e839..3fd9c928f3319 100644 --- a/src/wp-includes/class-wpdb.php +++ b/src/wp-includes/class-wpdb.php @@ -467,7 +467,7 @@ class wpdb { * * @since 3.0.0 * - * @var string + * @var string|null */ public $blogs; @@ -476,7 +476,7 @@ class wpdb { * * @since 5.1.0 * - * @var string + * @var string|null */ public $blogmeta; @@ -485,7 +485,7 @@ class wpdb { * * @since 3.0.0 * - * @var string + * @var string|null */ public $registration_log; @@ -494,7 +494,7 @@ class wpdb { * * @since 3.0.0 * - * @var string + * @var string|null */ public $signups; @@ -503,7 +503,7 @@ class wpdb { * * @since 3.0.0 * - * @var string + * @var string|null */ public $site; @@ -512,7 +512,7 @@ class wpdb { * * @since 3.0.0 * - * @var string + * @var string|null */ public $sitecategories; @@ -521,7 +521,7 @@ class wpdb { * * @since 3.0.0 * - * @var string + * @var string|null */ public $sitemeta;