From 041f055b358d457f59319644e883d481dd10b7e2 Mon Sep 17 00:00:00 2001 From: Ella <4710635+ellatrix@users.noreply.github.com> Date: Thu, 31 Oct 2024 11:16:48 +0100 Subject: [PATCH 1/4] Site editor: preload post if needed --- src/wp-admin/site-editor.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/wp-admin/site-editor.php b/src/wp-admin/site-editor.php index 3207bccdf2632..a32c3f0a59fb4 100644 --- a/src/wp-admin/site-editor.php +++ b/src/wp-admin/site-editor.php @@ -118,6 +118,10 @@ static function ( $classes ) { ), ); +if ( ! empty( $_GET['postId'] ) ) { + $preload_paths[] = add_query_arg( 'context', 'edit', rest_get_route_for_post( $_GET['postId'] ) ); +} + block_editor_rest_api_preload( $preload_paths, $block_editor_context ); wp_add_inline_script( From fb9ec3602a5f4c27463364a30858c0c7f909bbba Mon Sep 17 00:00:00 2001 From: Ella Date: Fri, 1 Nov 2024 11:02:34 +0100 Subject: [PATCH 2/4] Set context and guard for empty route --- src/wp-admin/site-editor.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/wp-admin/site-editor.php b/src/wp-admin/site-editor.php index a32c3f0a59fb4..bb4fe4ce15617 100644 --- a/src/wp-admin/site-editor.php +++ b/src/wp-admin/site-editor.php @@ -56,7 +56,13 @@ static function ( $classes ) { $indexed_template_types[] = $template_type; } -$block_editor_context = new WP_Block_Editor_Context( array( 'name' => 'core/edit-site' ) ); +$context_settings = array( 'name' => 'core/edit-site' ); + +if ( ! empty( $_GET['postId'] ) ) { + $context_settings['post'] = get_post( $_GET['postId'] ); +} + +$block_editor_context = new WP_Block_Editor_Context( $context_settings ); $custom_settings = array( 'siteUrl' => site_url(), 'postsPerPage' => get_option( 'posts_per_page' ), @@ -118,8 +124,11 @@ static function ( $classes ) { ), ); -if ( ! empty( $_GET['postId'] ) ) { - $preload_paths[] = add_query_arg( 'context', 'edit', rest_get_route_for_post( $_GET['postId'] ) ); +if ( $block_editor_context->post ) { + $route_for_post = rest_get_route_for_post( $block_editor_context->post ); + if ( $route_for_post ) { + $preload_paths[] = add_query_arg( 'context', 'edit', $route_for_post ); + } } block_editor_rest_api_preload( $preload_paths, $block_editor_context ); From fe05618b71b5cb3a03ce149ffec5f0415f1b3329 Mon Sep 17 00:00:00 2001 From: Ella Date: Fri, 1 Nov 2024 11:06:41 +0100 Subject: [PATCH 3/4] Add page template lookup --- src/wp-admin/site-editor.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/wp-admin/site-editor.php b/src/wp-admin/site-editor.php index bb4fe4ce15617..641a035d4f774 100644 --- a/src/wp-admin/site-editor.php +++ b/src/wp-admin/site-editor.php @@ -128,7 +128,18 @@ static function ( $classes ) { $route_for_post = rest_get_route_for_post( $block_editor_context->post ); if ( $route_for_post ) { $preload_paths[] = add_query_arg( 'context', 'edit', $route_for_post ); + if ( $block_editor_context->post->post_type === 'page' ) { + $preload_paths[] = add_query_arg( + 'slug', + // @see https://github.com/WordPress/gutenberg/blob/489f6067c623926bce7151a76755bb68d8e22ea7/packages/edit-site/src/components/sync-state-with-url/use-init-edited-entity-from-url.js#L139-L140 + 'page-' . $block_editor_context->post->post_name, + '/wp/v2/templates/lookup' + ); + } } +} else { + $preload_paths[] = '/wp/v2/templates/lookup?slug=front-page'; + $preload_paths[] = '/wp/v2/templates/lookup?slug=home'; } block_editor_rest_api_preload( $preload_paths, $block_editor_context ); From fb43af1d44a25f22a717fdca5d9287ebfd6c5ca6 Mon Sep 17 00:00:00 2001 From: Ella Date: Fri, 1 Nov 2024 12:34:48 +0100 Subject: [PATCH 4/4] check if post id is int --- src/wp-admin/site-editor.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/wp-admin/site-editor.php b/src/wp-admin/site-editor.php index 641a035d4f774..62229d8ed4db4 100644 --- a/src/wp-admin/site-editor.php +++ b/src/wp-admin/site-editor.php @@ -59,7 +59,10 @@ static function ( $classes ) { $context_settings = array( 'name' => 'core/edit-site' ); if ( ! empty( $_GET['postId'] ) ) { - $context_settings['post'] = get_post( $_GET['postId'] ); + $post_id = (int) $_GET['postId']; + if ( $post_id ) { + $context_settings['post'] = get_post( $post_id ); + } } $block_editor_context = new WP_Block_Editor_Context( $context_settings ); @@ -128,7 +131,7 @@ static function ( $classes ) { $route_for_post = rest_get_route_for_post( $block_editor_context->post ); if ( $route_for_post ) { $preload_paths[] = add_query_arg( 'context', 'edit', $route_for_post ); - if ( $block_editor_context->post->post_type === 'page' ) { + if ( 'page' === $block_editor_context->post->post_type ) { $preload_paths[] = add_query_arg( 'slug', // @see https://github.com/WordPress/gutenberg/blob/489f6067c623926bce7151a76755bb68d8e22ea7/packages/edit-site/src/components/sync-state-with-url/use-init-edited-entity-from-url.js#L139-L140