Make WordPress Core

Changeset 59958


Ignore:
Timestamp:
03/10/2025 10:32:56 AM (13 months ago)
Author:
Mamaduka
Message:

Editor: Update preload paths for post and site editor.

Preloading all blocking requests ensures that the editor canvas becomes responsive quickly and that the browser avoids unnecessary client-side requests.

Props mamaduka, joemcgill, audrasjb, peterwilsoncc.
Fixes #63050.

Location:
trunk/src/wp-admin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/edit-form-blocks.php

    r59795 r59958  
    5454$active_theme                   = get_stylesheet();
    5555$global_styles_endpoint_context = current_user_can( 'edit_theme_options' ) ? 'edit' : 'view';
     56$template_lookup_slug           = 'page' === $post->post_type ? 'page' : 'single-' . $post->post_type;
     57if ( ! empty( $post->post_name ) ) {
     58    $template_lookup_slug .= '-' . $post->post_name;
     59}
    5660// Preload common data.
    5761$preload_paths = array(
     
    8084     */
    8185    '/wp/v2/global-styles/' . WP_Theme_JSON_Resolver::get_user_global_styles_post_id() . '?context=' . $global_styles_endpoint_context,
     86    // Used by getBlockPatternCategories in useBlockEditorSettings.
     87    '/wp/v2/block-patterns/categories',
     88    // @see packages/core-data/src/entities.js
     89    '/?_fields=' . implode(
     90        ',',
     91        array(
     92            'description',
     93            'gmt_offset',
     94            'home',
     95            'name',
     96            'site_icon',
     97            'site_icon_url',
     98            'site_logo',
     99            'timezone_string',
     100            'url',
     101            'page_for_posts',
     102            'page_on_front',
     103            'show_on_front',
     104        )
     105    ),
     106    $paths[] = add_query_arg(
     107        'slug',
     108        // @see https://github.com/WordPress/gutenberg/blob/e093fefd041eb6cc4a4e7f67b92ab54fd75c8858/packages/core-data/src/private-selectors.ts#L244-L254
     109        $template_lookup_slug,
     110        '/wp/v2/templates/lookup'
     111    ),
    82112);
    83113
  • trunk/src/wp-admin/site-editor.php

    r59850 r59958  
    140140}
    141141
    142 $block_editor_context = new WP_Block_Editor_Context( array( 'name' => 'core/edit-site' ) );
     142$context_settings = array( 'name' => 'core/edit-site' );
     143
     144if ( ! empty( $_GET['postId'] ) && is_numeric( $_GET['postId'] ) ) {
     145    $context_settings['post'] = get_post( (int) $_GET['postId'] );
     146} elseif ( isset( $_GET['p'] ) && preg_match( '/^\/page\/(\d+)$/', $_GET['p'], $matches ) ) {
     147    $context_settings['post'] = get_post( (int) $matches[1] );
     148}
     149
     150$block_editor_context = new WP_Block_Editor_Context( $context_settings );
    143151$custom_settings      = array(
    144152    'siteUrl'                   => site_url(),
     
    200208        'GET',
    201209    ),
    202 );
     210    '/wp/v2/settings',
     211    array( '/wp/v2/settings', 'OPTIONS' ),
     212    // Used by getBlockPatternCategories in useBlockEditorSettings.
     213    '/wp/v2/block-patterns/categories',
     214    // @see packages/core-data/src/entities.js
     215    '/?_fields=' . implode(
     216        ',',
     217        array(
     218            'description',
     219            'gmt_offset',
     220            'home',
     221            'name',
     222            'site_icon',
     223            'site_icon_url',
     224            'site_logo',
     225            'timezone_string',
     226            'url',
     227            'page_for_posts',
     228            'page_on_front',
     229            'show_on_front',
     230        )
     231    ),
     232);
     233
     234if ( $block_editor_context->post ) {
     235    $route_for_post = rest_get_route_for_post( $block_editor_context->post );
     236    if ( $route_for_post ) {
     237        $preload_paths[] = add_query_arg( 'context', 'edit', $route_for_post );
     238        if ( 'page' === $block_editor_context->post->post_type ) {
     239            $preload_paths[] = add_query_arg(
     240                'slug',
     241                // @see https://github.com/WordPress/gutenberg/blob/e093fefd041eb6cc4a4e7f67b92ab54fd75c8858/packages/core-data/src/private-selectors.ts#L244-L254
     242                empty( $block_editor_context->post->post_name ) ? 'page' : 'page-' . $post->post_name,
     243                '/wp/v2/templates/lookup'
     244            );
     245        }
     246    }
     247} else {
     248    $preload_paths[] = '/wp/v2/templates/lookup?slug=front-page';
     249    $preload_paths[] = '/wp/v2/templates/lookup?slug=home';
     250}
    203251
    204252block_editor_rest_api_preload( $preload_paths, $block_editor_context );
Note: See TracChangeset for help on using the changeset viewer.