From 70ba0d58e3c14405e3a64cd4844c1d60d1a06c0a Mon Sep 17 00:00:00 2001 From: vishalkakadiya Date: Mon, 9 Feb 2026 15:41:00 +0530 Subject: [PATCH 1/3] REST API: Return empty object instead of empty array for meta field --- .../rest-api/fields/class-wp-rest-meta-fields.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/rest-api/fields/class-wp-rest-meta-fields.php b/src/wp-includes/rest-api/fields/class-wp-rest-meta-fields.php index a9c3fbcde831a..37f9bd027e3bd 100644 --- a/src/wp-includes/rest-api/fields/class-wp-rest-meta-fields.php +++ b/src/wp-includes/rest-api/fields/class-wp-rest-meta-fields.php @@ -74,7 +74,8 @@ public function register_field() { * * @param int $object_id Object ID to fetch meta for. * @param WP_REST_Request $request Full details about the request. - * @return array Array containing the meta values keyed by name. + * @return array|stdClass Array containing the meta values keyed by name, + * or stdClass if empty to ensure JSON object encoding. */ public function get_value( $object_id, $request ) { $fields = $this->get_registered_fields(); @@ -105,6 +106,11 @@ public function get_value( $object_id, $request ) { $response[ $name ] = $value; } + // Use stdClass so that JSON result is {} and not []. + if ( empty( $response ) ) { + return new stdClass(); + } + return $response; } From 9f4b96974de8f57e98974810473dd492681e23c7 Mon Sep 17 00:00:00 2001 From: vishalkakadiya Date: Mon, 9 Feb 2026 16:25:11 +0530 Subject: [PATCH 2/3] Update test cases --- .../class-wp-rest-blocks-controller.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-blocks-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-blocks-controller.php index b7286bea746e4..0ddde14e8dcb3 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-blocks-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-blocks-controller.php @@ -57,9 +57,19 @@ public function filter_response_by_context( $data, $context ) { unset( $data['title']['rendered'] ); unset( $data['content']['rendered'] ); - // Add the core wp_pattern_sync_status meta as top level property to the response. - $data['wp_pattern_sync_status'] = $data['meta']['wp_pattern_sync_status'] ?? ''; - unset( $data['meta']['wp_pattern_sync_status'] ); + /* + * Add the core wp_pattern_sync_status meta as top level property to the response. + * Handle both array and object (stdClass) meta values. + */ + if ( is_array( $data['meta'] ) && isset( $data['meta']['wp_pattern_sync_status'] ) ) { + $data['wp_pattern_sync_status'] = $data['meta']['wp_pattern_sync_status']; + unset( $data['meta']['wp_pattern_sync_status'] ); + } elseif ( is_object( $data['meta'] ) && property_exists( $data['meta'], 'wp_pattern_sync_status' ) ) { + $data['wp_pattern_sync_status'] = $data['meta']->wp_pattern_sync_status; + unset( $data['meta']->wp_pattern_sync_status ); + } else { + $data['wp_pattern_sync_status'] = ''; + } return $data; } From 7cb31474cb0f5e42fb9075d39f24d0ad0e7755ff Mon Sep 17 00:00:00 2001 From: vishalkakadiya Date: Mon, 9 Feb 2026 16:40:42 +0530 Subject: [PATCH 3/3] Update test cases --- src/wp-includes/rest-api/fields/class-wp-rest-meta-fields.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/wp-includes/rest-api/fields/class-wp-rest-meta-fields.php b/src/wp-includes/rest-api/fields/class-wp-rest-meta-fields.php index 37f9bd027e3bd..95b441a032e5f 100644 --- a/src/wp-includes/rest-api/fields/class-wp-rest-meta-fields.php +++ b/src/wp-includes/rest-api/fields/class-wp-rest-meta-fields.php @@ -588,6 +588,10 @@ public static function prepare_value( $value, $request, $args ) { * @return array|false The meta array, if valid, false otherwise. */ public function check_meta_is_array( $value, $request, $param ) { + if ( is_object( $value ) ) { + $value = (array) $value; + } + if ( ! is_array( $value ) ) { return false; }