diff --git a/lib/client-assets.php b/lib/client-assets.php index 8c4a6bd373c040..64d4dd18d75deb 100644 --- a/lib/client-assets.php +++ b/lib/client-assets.php @@ -614,12 +614,6 @@ function gutenberg_extend_wp_api_backbone_client() { wp_json_encode( $schema_response->get_data() ) ), 'before' ); } - - /* - * For API requests to happen over HTTP/1.0 methods, - * as HTTP/1.1 methods are blocked in a variety of situations. - */ - wp_add_inline_script( 'wp-api', 'Backbone.emulateHTTP = true;', 'before' ); } /** diff --git a/lib/compat.php b/lib/compat.php index 6b4845d9a718fc..e0372a72fadabd 100644 --- a/lib/compat.php +++ b/lib/compat.php @@ -102,6 +102,37 @@ function gutenberg_shim_fix_api_request_plain_permalinks( $scripts ) { } add_action( 'wp_default_scripts', 'gutenberg_shim_fix_api_request_plain_permalinks' ); +/** + * Shims support for emulating HTTP/1.0 requests in wp.apiRequest + * + * @see https://core.trac.wordpress.org/ticket/43605 + * + * @param WP_Scripts $scripts WP_Scripts instance (passed by reference). + */ +function gutenberg_shim_api_request_emulate_http( $scripts ) { + $api_request_fix = <<= 0 ) { + if ( ! options.headers ) { + options.headers = {}; + } + options.headers['X-HTTP-Method-Override'] = options.method; + options.method = 'POST'; + } + } + + return oldApiRequest( options ); + } +} )( window.wp ); +JS; + + $scripts->add_inline_script( 'wp-api-request', $api_request_fix, 'after' ); +} +add_action( 'wp_default_scripts', 'gutenberg_shim_api_request_emulate_http' ); + /** * Disables wpautop behavior in classic editor when post contains blocks, to * prevent removep from invalidating paragraph blocks.