diff -r be944660c56a -r 3d72ae0968f4 wp/wp-admin/edit-form-blocks.php --- a/wp/wp-admin/edit-form-blocks.php Wed Sep 21 18:19:35 2022 +0200 +++ b/wp/wp-admin/edit-form-blocks.php Tue Sep 27 16:37:53 2022 +0200 @@ -31,7 +31,7 @@ // Default to is-fullscreen-mode to avoid jumps in the UI. add_filter( 'admin_body_class', - function( $classes ) { + static function( $classes ) { return "$classes is-fullscreen-mode"; } ); @@ -49,20 +49,27 @@ wp_enqueue_script( 'heartbeat' ); wp_enqueue_script( 'wp-edit-post' ); -$rest_base = ! empty( $post_type_object->rest_base ) ? $post_type_object->rest_base : $post_type_object->name; +$rest_path = rest_get_route_for_post( $post ); // Preload common data. $preload_paths = array( - '/', - '/wp/v2/types?context=edit', - '/wp/v2/taxonomies?per_page=-1&context=edit', - '/wp/v2/themes?status=active', - sprintf( '/wp/v2/%s/%s?context=edit', $rest_base, $post->ID ), + '/wp/v2/types?context=view', + '/wp/v2/taxonomies?context=view', + add_query_arg( + array( + 'context' => 'edit', + 'per_page' => -1, + ), + rest_get_route_for_post_type_items( 'wp_block' ) + ), + add_query_arg( 'context', 'edit', $rest_path ), sprintf( '/wp/v2/types/%s?context=edit', $post_type ), - sprintf( '/wp/v2/users/me?post_type=%s&context=edit', $post_type ), - array( '/wp/v2/media', 'OPTIONS' ), - array( '/wp/v2/blocks', 'OPTIONS' ), - sprintf( '/wp/v2/%s/%d/autosaves?context=edit', $rest_base, $post->ID ), + '/wp/v2/users/me', + array( rest_get_route_for_post_type_items( 'attachment' ), 'OPTIONS' ), + array( rest_get_route_for_post_type_items( 'page' ), 'OPTIONS' ), + array( rest_get_route_for_post_type_items( 'wp_block' ), 'OPTIONS' ), + sprintf( '%s/autosaves?context=edit', $rest_path ), + '/wp/v2/settings', ); block_editor_rest_api_preload( $preload_paths, $block_editor_context ); @@ -77,16 +84,22 @@ * Assign initial edits, if applicable. These are not initially assigned to the persisted post, * but should be included in its save payload. */ -$initial_edits = null; +$initial_edits = array(); $is_new_post = false; if ( 'auto-draft' === $post->post_status ) { $is_new_post = true; // Override "(Auto Draft)" new post default title with empty string, or filtered value. - $initial_edits = array( - 'title' => $post->post_title, - 'content' => $post->post_content, - 'excerpt' => $post->post_excerpt, - ); + if ( post_type_supports( $post->post_type, 'title' ) ) { + $initial_edits['title'] = $post->post_title; + } + + if ( post_type_supports( $post->post_type, 'editor' ) ) { + $initial_edits['content'] = $post->post_content; + } + + if ( post_type_supports( $post->post_type, 'excerpt' ) ) { + $initial_edits['excerpt'] = $post->post_excerpt; + } } // Preload server-registered block schemas. @@ -141,9 +154,9 @@ if ( $locked ) { $user = get_userdata( $user_id ); $user_details = array( - 'name' => $user->display_name, + 'avatar' => get_avatar_url( $user_id, array( 'size' => 128 ) ), + 'name' => $user->display_name, ); - $avatar = get_avatar_url( $user_id, array( 'size' => 64 ) ); } $lock_details = array( @@ -175,30 +188,31 @@ $body_placeholder = apply_filters( 'write_your_story', __( 'Type / to choose a block' ), $post ); $editor_settings = array( - 'availableTemplates' => $available_templates, - 'disablePostFormats' => ! current_theme_supports( 'post-formats' ), + 'availableTemplates' => $available_templates, + 'disablePostFormats' => ! current_theme_supports( 'post-formats' ), /** This filter is documented in wp-admin/edit-form-advanced.php */ - 'titlePlaceholder' => apply_filters( 'enter_title_here', __( 'Add title' ), $post ), - 'bodyPlaceholder' => $body_placeholder, - 'autosaveInterval' => AUTOSAVE_INTERVAL, - 'styles' => get_block_editor_theme_styles(), - 'richEditingEnabled' => user_can_richedit(), - 'postLock' => $lock_details, - 'postLockUtils' => array( + 'titlePlaceholder' => apply_filters( 'enter_title_here', __( 'Add title' ), $post ), + 'bodyPlaceholder' => $body_placeholder, + 'autosaveInterval' => AUTOSAVE_INTERVAL, + 'richEditingEnabled' => user_can_richedit(), + 'postLock' => $lock_details, + 'postLockUtils' => array( 'nonce' => wp_create_nonce( 'lock-post_' . $post->ID ), 'unlockNonce' => wp_create_nonce( 'update-post_' . $post->ID ), 'ajaxUrl' => admin_url( 'admin-ajax.php' ), ), - 'supportsLayout' => WP_Theme_JSON_Resolver::theme_has_support(), - '__experimentalBlockPatterns' => WP_Block_Patterns_Registry::get_instance()->get_all_registered(), - '__experimentalBlockPatternCategories' => WP_Block_Pattern_Categories_Registry::get_instance()->get_all_registered(), - 'supportsTemplateMode' => current_theme_supports( 'block-templates' ), + 'supportsLayout' => WP_Theme_JSON_Resolver::theme_has_support(), + 'supportsTemplateMode' => current_theme_supports( 'block-templates' ), // Whether or not to load the 'postcustom' meta box is stored as a user meta // field so that we're not always loading its assets. - 'enableCustomFields' => (bool) get_user_meta( get_current_user_id(), 'enable_custom_fields', true ), + 'enableCustomFields' => (bool) get_user_meta( get_current_user_id(), 'enable_custom_fields', true ), ); +// Add additional back-compat patterns registered by `current_screen` et al. +$editor_settings['__experimentalAdditionalBlockPatterns'] = WP_Block_Patterns_Registry::get_instance()->get_all_registered( true ); +$editor_settings['__experimentalAdditionalBlockPatternCategories'] = WP_Block_Pattern_Categories_Registry::get_instance()->get_all_registered( true ); + $autosave = wp_get_post_autosave( $post->ID ); if ( $autosave ) { if ( mysql2date( 'U', $autosave->post_modified_gmt, false ) > mysql2date( 'U', $post->post_modified_gmt, false ) ) { @@ -223,6 +237,10 @@ } } +if ( wp_is_block_theme() && $editor_settings['supportsTemplateMode'] ) { + $editor_settings['defaultTemplatePartAreas'] = get_allowed_block_template_part_areas(); +} + /** * Scripts */