diff --git a/src/wp-admin/edit-form-blocks.php b/src/wp-admin/edit-form-blocks.php index 3bd43e0f1c..30b5b2d64e 100644 --- a/src/wp-admin/edit-form-blocks.php +++ b/src/wp-admin/edit-form-blocks.php @@ -19,8 +19,9 @@ if ( ! defined( 'ABSPATH' ) ) { * @global WP_Post $post * @global string $title * @global array $editor_styles + * @global array $wp_meta_boxes */ -global $post_type, $post_type_object, $post, $title, $editor_styles; +global $post_type, $post_type_object, $post, $title, $editor_styles, $wp_meta_boxes; if ( ! empty( $post_type_object ) ) { $title = $post_type_object->labels->edit_item; @@ -316,36 +317,6 @@ if ( $is_new_post && ! isset( $editor_settings['template'] ) && 'post' === $post } } -$init_script = <<post_type, - $post->ID, - wp_json_encode( $editor_settings ), - wp_json_encode( $initial_edits ) -); -wp_add_inline_script( 'wp-edit-post', $script ); - /** * Scripts */ @@ -378,6 +349,41 @@ do_action( 'enqueue_block_editor_assets' ); require_once( ABSPATH . 'wp-admin/includes/meta-boxes.php' ); register_and_do_post_meta_boxes( $post ); +// Check if the Custom Fields meta box has been removed at some point. +$core_meta_boxes = $wp_meta_boxes[ $current_screen->id ]['normal']['core']; +if ( ! isset( $core_meta_boxes['postcustom'] ) || ! $core_meta_boxes['postcustom'] ) { + unset( $editor_settings['enableCustomFields'] ); +} + +/** + * Filters the settings to pass to the block editor. + * + * @since 5.0.0 + * + * @param array $editor_settings Default editor settings. + * @param WP_Post $post Post being edited. + */ +$editor_settings = apply_filters( 'block_editor_settings', $editor_settings, $post ); + +$init_script = <<post_type, + $post->ID, + wp_json_encode( $editor_settings ), + wp_json_encode( $initial_edits ) +); +wp_add_inline_script( 'wp-edit-post', $script ); + require_once( ABSPATH . 'wp-admin/admin-header.php' ); ?> diff --git a/src/wp-admin/includes/meta-boxes.php b/src/wp-admin/includes/meta-boxes.php index 50b871321c..97ca20a193 100644 --- a/src/wp-admin/includes/meta-boxes.php +++ b/src/wp-admin/includes/meta-boxes.php @@ -1361,10 +1361,11 @@ function register_and_do_post_meta_boxes( $post ) { add_meta_box('trackbacksdiv', __('Send Trackbacks'), 'post_trackback_meta_box', null, 'normal', 'core', array( '__back_compat_meta_box' => true ) ); if ( post_type_supports($post_type, 'custom-fields') ) { - $screen = get_current_screen(); - if ( ! $screen || ! $screen->is_block_editor() || (bool) get_user_meta( get_current_user_id(), 'enable_custom_fields', true ) ) { - add_meta_box('postcustom', __('Custom Fields'), 'post_custom_meta_box', null, 'normal', 'core', array( '__back_compat_meta_box' => false, '__block_editor_compatible_meta_box' => true ) ); - } + $args = array( + '__back_compat_meta_box' => ! (bool) get_user_meta( get_current_user_id(), 'enable_custom_fields', true ), + '__block_editor_compatible_meta_box' => true + ); + add_meta_box('postcustom', __('Custom Fields'), 'post_custom_meta_box', null, 'normal', 'core', $args ); } /** diff --git a/src/wp-admin/includes/template.php b/src/wp-admin/includes/template.php index f9c2a799cc..fc0575cb6a 100644 --- a/src/wp-admin/includes/template.php +++ b/src/wp-admin/includes/template.php @@ -1076,7 +1076,8 @@ function do_meta_boxes( $screen, $context, $object ) { } $i++; - $hidden_class = in_array($box['id'], $hidden) ? ' hide-if-js' : ''; + // get_hidden_meta_boxes() doesn't apply in the block editor. + $hidden_class = ( ! $screen->is_block_editor() && in_array( $box['id'], $hidden ) ) ? ' hide-if-js' : ''; echo '
' . "\n"; if ( 'dashboard_browser_nag' != $box['id'] ) { $widget_title = $box[ 'title' ];