Changeset 7580
- Timestamp:
- 08/02/2018 12:55:50 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/gutenberg/functions.php
r7579 r7580 32 32 wp_enqueue_style( 'l10n' ); 33 33 wp_enqueue_style( 'buttons' ); 34 35 // Use a middleware provider to intercept and modify API calls. Short-circuit POST requests, bound queries, allow media, etc. 34 36 wp_add_inline_script( 'wp-api-fetch', 35 37 sprintf( … … 40 42 ); 41 43 44 // Prevent non-whitelisted non-GET requests (ie. POST) to prevent errors 42 45 if ( options.method && options.method !== "GET" && ! isWhitelistedEndpoint ) { 43 return Promise.resolve( options.data ); // This works in enough cases to be the default return value. 46 // This works in enough cases to be the default return value. 47 return Promise.resolve( options.data ); 44 48 } 49 50 // Add limits to all GET queries which attempt unbound queries 45 51 options.path = options.path.replace( "per_page=-1", "per_page=10" ); 52 53 // Load images with the view context, seems to work 54 if ( lodash.startsWith( options.path, "/wp/v2/media/" ) ) { 55 options.path = options.path.replace( "context=edit", "context=view" ); 56 } 46 57 47 58 return next( options ); … … 50 61 'after' 51 62 ); 63 64 // Use a middleware preloader to handle the "types" API endpoints with minimal data needed 65 wp_add_inline_script( 'wp-api-fetch', 66 'wp.apiFetch.use( wp.apiFetch.createPreloadingMiddleware( { 67 "/wp/v2/types?context=edit": { "body": { 68 "page": { 69 "rest_base": "pages", 70 "supports": {} 71 }, 72 "wp_block": { 73 "rest_base": "blocks", 74 "supports": {} 75 } 76 } }, 77 "/wp/v2/types/page?context=edit": { "body": { 78 "rest_base": "pages", 79 "supports": {} 80 } }, 81 "/wp/v2/types/wp_block?context=edit": { "body": { 82 "rest_base": "blocks", 83 "supports": {} 84 } } 85 } ) );', 86 'after' 87 ); 88 89 // Use a middleware preloader to load the custom post content: 90 $frontendburg_content = include __DIR__ . '/gutenfront-content.php'; 91 wp_add_inline_script( 'wp-api-fetch', 92 sprintf( 93 'wp.apiFetch.use( wp.apiFetch.createPreloadingMiddleware( %s ) );', 94 wp_json_encode( array( 95 "/wp/v2/pages/" . get_post()->ID . "?context=edit" => [ 'body' => [ 96 'id' => get_post()->ID, 97 'title' => [ 'raw' => $frontendburg_content['title'] ], 98 'content' => [ 'block_format' => 1, 'raw' => $frontendburg_content['content'] ], 99 'excerpt' => [ 'raw' => '' ], 100 'date' => '', 'date_gmt' => '', 'modified' => '', 'modified_gmt' => '', 101 'link' => home_url('/'), 'guid' => [], 102 'parent' => 0, 'menu_order' => 0, 'author' => 0, 'featured_media' => 0, 103 'comment_status' => 'closed', 'ping_status' => 'closed', 'template' => '', 'meta' => [], '_links' => [], 104 'type' => 'page', 'status' => 'draft', 105 'slug' => '', 'generated_slug' => '', 'permalink_template' => home_url('/'), 106 ] ] 107 ) ) 108 ), 109 'after' 110 ); 111 112 // Add a middleware provider which intercepts all uploads and stores them within the browser 52 113 wp_add_inline_script( 'wp-api-fetch', 53 114 sprintf( … … 200 261 } 201 262 add_action( 'wp_ajax_nopriv_query-attachments', 'frontenberg_wp_ajax_nopriv_query_attachments' ); 202 203 // Override the WP API to give Gutenberg the REST API responses it wants.204 function frontenberg_override_rest_api( $null, $wp_rest_server, $request ) {205 if ( is_admin() || preg_match( '!/wp-json/!', $_SERVER['REQUEST_URI'] ) ) {206 return $null; // Don't modify an actual API responses..207 }208 209 if ( '/wp/v2/types' == $request->get_route() ) {210 // Minimal data required by Gutenberg for pages.211 return new WP_REST_Response( array(212 'page' => array(213 'rest_base' => 'pages',214 )215 ), 200 );216 }217 218 if ( preg_match( '!^/wp/v2/pages/(\d+)$!', $request->get_route(), $m ) ) {219 $content = include __DIR__ . '/gutenfront-content.php';220 221 return new WP_REST_Response( array(222 'id' => $m[1],223 'date' => gmdate( 'c' ), 'date_gmt' => gmdate( 'c' ),224 'modified' => gmdate( 'c' ), 'modified_gmt' => gmdate( 'c' ),225 'link' => 'https://wordpress.org/gutenberg/', 'guid' => array(),226 'parent' => 0, 'menu_order' => 0, 'author' => 0, 'featured_media' => 0,227 'comment_status' => 'closed', 'ping_status' => 'closed', 'template' => '', 'meta' => [], '_links' => [],228 'type' => 'page', 'status' => 'draft',229 'slug' => '', 'generated_slug' => '', 'permalink_template' => home_url('/'),230 'excerpt' => array( 'raw' => '' ),231 'title' => array(232 'raw' => $content['title'],233 ),234 'content' => array(235 'block_format' => 1,236 'raw' => $content['content'],237 ),238 ), 200 );239 }240 241 return $null;242 }243 add_filter( 'rest_pre_dispatch', 'frontenberg_override_rest_api', 10, 3 );244 245 263 246 264 if ( ! function_exists( 'gutenbergtheme_setup' ) ) :
Note: See TracChangeset
for help on using the changeset viewer.