Block Editor: Hide the Custom Fields meta box option if that meta box has been removed.
Some plugins remove the Custom Fields meta box, particularly when they provide functionality that replaces it. The block editor would correctly not display this meta box in these circumstances, but it still showed the option to display or hide it. Props pento, noisysocks. Merges [43885] to trunk. See #45282. git-svn-id: https://develop.svn.wordpress.org/trunk@44244 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
4c20251e6d
commit
61234818ae
@ -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;
|
||||
@ -296,36 +297,6 @@ if ( $is_new_post && ! isset( $editor_settings['template'] ) && 'post' === $post
|
||||
}
|
||||
}
|
||||
|
||||
$init_script = <<<JS
|
||||
( function() {
|
||||
window._wpLoadBlockEditor = new Promise( function( resolve ) {
|
||||
wp.domReady( function() {
|
||||
resolve( wp.editPost.initializeEditor( 'editor', "%s", %d, %s, %s ) );
|
||||
} );
|
||||
} );
|
||||
} )();
|
||||
JS;
|
||||
|
||||
|
||||
/**
|
||||
* 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 );
|
||||
|
||||
$script = sprintf(
|
||||
$init_script,
|
||||
$post->post_type,
|
||||
$post->ID,
|
||||
wp_json_encode( $editor_settings ),
|
||||
wp_json_encode( $initial_edits )
|
||||
);
|
||||
wp_add_inline_script( 'wp-edit-post', $script );
|
||||
|
||||
/**
|
||||
* Scripts
|
||||
*/
|
||||
@ -358,6 +329,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 = <<<JS
|
||||
( function() {
|
||||
window._wpLoadBlockEditor = new Promise( function( resolve ) {
|
||||
wp.domReady( function() {
|
||||
resolve( wp.editPost.initializeEditor( 'editor', "%s", %d, %s, %s ) );
|
||||
} );
|
||||
} );
|
||||
} )();
|
||||
JS;
|
||||
|
||||
$script = sprintf(
|
||||
$init_script,
|
||||
$post->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' );
|
||||
?>
|
||||
|
||||
|
@ -1463,7 +1463,11 @@ function register_and_do_post_meta_boxes( $post ) {
|
||||
}
|
||||
|
||||
if ( post_type_supports( $post_type, 'custom-fields' ) ) {
|
||||
add_meta_box( 'postcustom', __( 'Custom Fields' ), 'post_custom_meta_box', null, 'normal', 'core', array( '__back_compat_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 );
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1161,7 +1161,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 '<div id="' . $box['id'] . '" class="postbox ' . postbox_classes( $box['id'], $page ) . $hidden_class . '" ' . '>' . "\n";
|
||||
if ( 'dashboard_browser_nag' != $box['id'] ) {
|
||||
$widget_title = $box['title'];
|
||||
|
Loading…
Reference in New Issue
Block a user