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 */ |