diff -r 48c4eec2b7e6 -r 8c2e4d02f4ef wp/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php --- a/wp/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php Fri Sep 05 18:40:08 2025 +0200 +++ b/wp/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php Fri Sep 05 18:52:52 2025 +0200 @@ -133,9 +133,14 @@ * @since 5.8.0 * * @param WP_REST_Request $request Full details about the request. - * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + * @return WP_REST_Response Response object. */ public function get_items( $request ) { + if ( $request->is_method( 'HEAD' ) ) { + // Return early as this handler doesn't add any response headers. + return new WP_REST_Response( array() ); + } + $this->retrieve_widgets(); $prepared = array(); @@ -677,7 +682,13 @@ ); } - $widget = $wp_registered_widgets[ $widget_id ]; + $widget = $wp_registered_widgets[ $widget_id ]; + // Don't prepare the response body for HEAD requests. + if ( $request->is_method( 'HEAD' ) ) { + /** This filter is documented in wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php */ + return apply_filters( 'rest_prepare_widget', new WP_REST_Response( array() ), $widget, $request ); + } + $parsed_id = wp_parse_widget_id( $widget_id ); $fields = $this->get_fields_for_response( $request );