wp/wp-admin/edit-form-blocks.php
changeset 19 3d72ae0968f4
parent 18 be944660c56a
child 21 48c4eec2b7e6
equal deleted inserted replaced
18:be944660c56a 19:3d72ae0968f4
    29 $current_screen->is_block_editor( true );
    29 $current_screen->is_block_editor( true );
    30 
    30 
    31 // Default to is-fullscreen-mode to avoid jumps in the UI.
    31 // Default to is-fullscreen-mode to avoid jumps in the UI.
    32 add_filter(
    32 add_filter(
    33 	'admin_body_class',
    33 	'admin_body_class',
    34 	function( $classes ) {
    34 	static function( $classes ) {
    35 		return "$classes is-fullscreen-mode";
    35 		return "$classes is-fullscreen-mode";
    36 	}
    36 	}
    37 );
    37 );
    38 
    38 
    39 /*
    39 /*
    47 add_filter( 'screen_options_show_screen', '__return_false' );
    47 add_filter( 'screen_options_show_screen', '__return_false' );
    48 
    48 
    49 wp_enqueue_script( 'heartbeat' );
    49 wp_enqueue_script( 'heartbeat' );
    50 wp_enqueue_script( 'wp-edit-post' );
    50 wp_enqueue_script( 'wp-edit-post' );
    51 
    51 
    52 $rest_base = ! empty( $post_type_object->rest_base ) ? $post_type_object->rest_base : $post_type_object->name;
    52 $rest_path = rest_get_route_for_post( $post );
    53 
    53 
    54 // Preload common data.
    54 // Preload common data.
    55 $preload_paths = array(
    55 $preload_paths = array(
    56 	'/',
    56 	'/wp/v2/types?context=view',
    57 	'/wp/v2/types?context=edit',
    57 	'/wp/v2/taxonomies?context=view',
    58 	'/wp/v2/taxonomies?per_page=-1&context=edit',
    58 	add_query_arg(
    59 	'/wp/v2/themes?status=active',
    59 		array(
    60 	sprintf( '/wp/v2/%s/%s?context=edit', $rest_base, $post->ID ),
    60 			'context'  => 'edit',
       
    61 			'per_page' => -1,
       
    62 		),
       
    63 		rest_get_route_for_post_type_items( 'wp_block' )
       
    64 	),
       
    65 	add_query_arg( 'context', 'edit', $rest_path ),
    61 	sprintf( '/wp/v2/types/%s?context=edit', $post_type ),
    66 	sprintf( '/wp/v2/types/%s?context=edit', $post_type ),
    62 	sprintf( '/wp/v2/users/me?post_type=%s&context=edit', $post_type ),
    67 	'/wp/v2/users/me',
    63 	array( '/wp/v2/media', 'OPTIONS' ),
    68 	array( rest_get_route_for_post_type_items( 'attachment' ), 'OPTIONS' ),
    64 	array( '/wp/v2/blocks', 'OPTIONS' ),
    69 	array( rest_get_route_for_post_type_items( 'page' ), 'OPTIONS' ),
    65 	sprintf( '/wp/v2/%s/%d/autosaves?context=edit', $rest_base, $post->ID ),
    70 	array( rest_get_route_for_post_type_items( 'wp_block' ), 'OPTIONS' ),
       
    71 	sprintf( '%s/autosaves?context=edit', $rest_path ),
       
    72 	'/wp/v2/settings',
    66 );
    73 );
    67 
    74 
    68 block_editor_rest_api_preload( $preload_paths, $block_editor_context );
    75 block_editor_rest_api_preload( $preload_paths, $block_editor_context );
    69 
    76 
    70 wp_add_inline_script(
    77 wp_add_inline_script(
    75 
    82 
    76 /*
    83 /*
    77  * Assign initial edits, if applicable. These are not initially assigned to the persisted post,
    84  * Assign initial edits, if applicable. These are not initially assigned to the persisted post,
    78  * but should be included in its save payload.
    85  * but should be included in its save payload.
    79  */
    86  */
    80 $initial_edits = null;
    87 $initial_edits = array();
    81 $is_new_post   = false;
    88 $is_new_post   = false;
    82 if ( 'auto-draft' === $post->post_status ) {
    89 if ( 'auto-draft' === $post->post_status ) {
    83 	$is_new_post = true;
    90 	$is_new_post = true;
    84 	// Override "(Auto Draft)" new post default title with empty string, or filtered value.
    91 	// Override "(Auto Draft)" new post default title with empty string, or filtered value.
    85 	$initial_edits = array(
    92 	if ( post_type_supports( $post->post_type, 'title' ) ) {
    86 		'title'   => $post->post_title,
    93 		$initial_edits['title'] = $post->post_title;
    87 		'content' => $post->post_content,
    94 	}
    88 		'excerpt' => $post->post_excerpt,
    95 
    89 	);
    96 	if ( post_type_supports( $post->post_type, 'editor' ) ) {
       
    97 		$initial_edits['content'] = $post->post_content;
       
    98 	}
       
    99 
       
   100 	if ( post_type_supports( $post->post_type, 'excerpt' ) ) {
       
   101 		$initial_edits['excerpt'] = $post->post_excerpt;
       
   102 	}
    90 }
   103 }
    91 
   104 
    92 // Preload server-registered block schemas.
   105 // Preload server-registered block schemas.
    93 wp_add_inline_script(
   106 wp_add_inline_script(
    94 	'wp-blocks',
   107 	'wp-blocks',
   139 
   152 
   140 	$user_details = null;
   153 	$user_details = null;
   141 	if ( $locked ) {
   154 	if ( $locked ) {
   142 		$user         = get_userdata( $user_id );
   155 		$user         = get_userdata( $user_id );
   143 		$user_details = array(
   156 		$user_details = array(
   144 			'name' => $user->display_name,
   157 			'avatar' => get_avatar_url( $user_id, array( 'size' => 128 ) ),
       
   158 			'name'   => $user->display_name,
   145 		);
   159 		);
   146 		$avatar       = get_avatar_url( $user_id, array( 'size' => 64 ) );
       
   147 	}
   160 	}
   148 
   161 
   149 	$lock_details = array(
   162 	$lock_details = array(
   150 		'isLocked' => $locked,
   163 		'isLocked' => $locked,
   151 		'user'     => $user_details,
   164 		'user'     => $user_details,
   173  * @param WP_Post $post Post object.
   186  * @param WP_Post $post Post object.
   174  */
   187  */
   175 $body_placeholder = apply_filters( 'write_your_story', __( 'Type / to choose a block' ), $post );
   188 $body_placeholder = apply_filters( 'write_your_story', __( 'Type / to choose a block' ), $post );
   176 
   189 
   177 $editor_settings = array(
   190 $editor_settings = array(
   178 	'availableTemplates'                   => $available_templates,
   191 	'availableTemplates'   => $available_templates,
   179 	'disablePostFormats'                   => ! current_theme_supports( 'post-formats' ),
   192 	'disablePostFormats'   => ! current_theme_supports( 'post-formats' ),
   180 	/** This filter is documented in wp-admin/edit-form-advanced.php */
   193 	/** This filter is documented in wp-admin/edit-form-advanced.php */
   181 	'titlePlaceholder'                     => apply_filters( 'enter_title_here', __( 'Add title' ), $post ),
   194 	'titlePlaceholder'     => apply_filters( 'enter_title_here', __( 'Add title' ), $post ),
   182 	'bodyPlaceholder'                      => $body_placeholder,
   195 	'bodyPlaceholder'      => $body_placeholder,
   183 	'autosaveInterval'                     => AUTOSAVE_INTERVAL,
   196 	'autosaveInterval'     => AUTOSAVE_INTERVAL,
   184 	'styles'                               => get_block_editor_theme_styles(),
   197 	'richEditingEnabled'   => user_can_richedit(),
   185 	'richEditingEnabled'                   => user_can_richedit(),
   198 	'postLock'             => $lock_details,
   186 	'postLock'                             => $lock_details,
   199 	'postLockUtils'        => array(
   187 	'postLockUtils'                        => array(
       
   188 		'nonce'       => wp_create_nonce( 'lock-post_' . $post->ID ),
   200 		'nonce'       => wp_create_nonce( 'lock-post_' . $post->ID ),
   189 		'unlockNonce' => wp_create_nonce( 'update-post_' . $post->ID ),
   201 		'unlockNonce' => wp_create_nonce( 'update-post_' . $post->ID ),
   190 		'ajaxUrl'     => admin_url( 'admin-ajax.php' ),
   202 		'ajaxUrl'     => admin_url( 'admin-ajax.php' ),
   191 	),
   203 	),
   192 	'supportsLayout'                       => WP_Theme_JSON_Resolver::theme_has_support(),
   204 	'supportsLayout'       => WP_Theme_JSON_Resolver::theme_has_support(),
   193 	'__experimentalBlockPatterns'          => WP_Block_Patterns_Registry::get_instance()->get_all_registered(),
   205 	'supportsTemplateMode' => current_theme_supports( 'block-templates' ),
   194 	'__experimentalBlockPatternCategories' => WP_Block_Pattern_Categories_Registry::get_instance()->get_all_registered(),
       
   195 	'supportsTemplateMode'                 => current_theme_supports( 'block-templates' ),
       
   196 
   206 
   197 	// Whether or not to load the 'postcustom' meta box is stored as a user meta
   207 	// Whether or not to load the 'postcustom' meta box is stored as a user meta
   198 	// field so that we're not always loading its assets.
   208 	// field so that we're not always loading its assets.
   199 	'enableCustomFields'                   => (bool) get_user_meta( get_current_user_id(), 'enable_custom_fields', true ),
   209 	'enableCustomFields'   => (bool) get_user_meta( get_current_user_id(), 'enable_custom_fields', true ),
   200 );
   210 );
       
   211 
       
   212 // Add additional back-compat patterns registered by `current_screen` et al.
       
   213 $editor_settings['__experimentalAdditionalBlockPatterns']          = WP_Block_Patterns_Registry::get_instance()->get_all_registered( true );
       
   214 $editor_settings['__experimentalAdditionalBlockPatternCategories'] = WP_Block_Pattern_Categories_Registry::get_instance()->get_all_registered( true );
   201 
   215 
   202 $autosave = wp_get_post_autosave( $post->ID );
   216 $autosave = wp_get_post_autosave( $post->ID );
   203 if ( $autosave ) {
   217 if ( $autosave ) {
   204 	if ( mysql2date( 'U', $autosave->post_modified_gmt, false ) > mysql2date( 'U', $post->post_modified_gmt, false ) ) {
   218 	if ( mysql2date( 'U', $autosave->post_modified_gmt, false ) > mysql2date( 'U', $post->post_modified_gmt, false ) ) {
   205 		$editor_settings['autosave'] = array(
   219 		$editor_settings['autosave'] = array(
   219 if ( $is_new_post && ! isset( $editor_settings['template'] ) && 'post' === $post->post_type ) {
   233 if ( $is_new_post && ! isset( $editor_settings['template'] ) && 'post' === $post->post_type ) {
   220 	$post_format = get_post_format( $post );
   234 	$post_format = get_post_format( $post );
   221 	if ( in_array( $post_format, array( 'audio', 'gallery', 'image', 'quote', 'video' ), true ) ) {
   235 	if ( in_array( $post_format, array( 'audio', 'gallery', 'image', 'quote', 'video' ), true ) ) {
   222 		$editor_settings['template'] = array( array( "core/$post_format" ) );
   236 		$editor_settings['template'] = array( array( "core/$post_format" ) );
   223 	}
   237 	}
       
   238 }
       
   239 
       
   240 if ( wp_is_block_theme() && $editor_settings['supportsTemplateMode'] ) {
       
   241 	$editor_settings['defaultTemplatePartAreas'] = get_allowed_block_template_part_areas();
   224 }
   242 }
   225 
   243 
   226 /**
   244 /**
   227  * Scripts
   245  * Scripts
   228  */
   246  */