Make WordPress Core

Changeset 43779


Ignore:
Timestamp:
10/22/2018 02:31:38 AM (5 years ago)
Author:
pento
Message:

Meta Boxes: Add __back_compat_meta_box and __block_editor_compatible_meta_box flags to meta boxes.

When meta boxes are registered, they can use the __back_compat_meta_box and __block_editor_compatible_meta_box flags, to show whether this registration just exists for if the classic editor is loaded, and whether this meta box is compatible with the block editor.

When a meta box marks itself as incompatible with the block editor, and WP_DEBUG is enabled, a warning will show inside that meta box in the classic editor.

As all core meta boxes have been recreated in the block editor, they can be marked with the __back_compat_meta_box flag.

See #45112.

Location:
branches/5.0/src/wp-admin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/5.0/src/wp-admin/edit-form-advanced.php

    r42192 r43779  
    227227
    228228
    229 $publish_callback_args = null;
     229$publish_callback_args = array( '__back_compat_meta_box' => true );
    230230if ( post_type_supports($post_type, 'revisions') && 'auto-draft' != $post->post_status ) {
    231231    $revisions = wp_get_post_revisions( $post_ID );
     
    234234    if ( count( $revisions ) > 1 ) {
    235235        reset( $revisions ); // Reset pointer for key()
    236         $publish_callback_args = array( 'revisions_count' => count( $revisions ), 'revision_id' => key( $revisions ) );
    237         add_meta_box('revisionsdiv', __('Revisions'), 'post_revisions_meta_box', null, 'normal', 'core');
     236        $publish_callback_args = array( 'revisions_count' => count( $revisions ), 'revision_id' => key( $revisions ), '__back_compat_meta_box' => true );
     237        add_meta_box('revisionsdiv', __('Revisions'), 'post_revisions_meta_box', null, 'normal', 'core', array( '__back_compat_meta_box' => true ) );
    238238    }
    239239}
     
    242242    wp_enqueue_script( 'image-edit' );
    243243    wp_enqueue_style( 'imgareaselect' );
    244     add_meta_box( 'submitdiv', __('Save'), 'attachment_submit_meta_box', null, 'side', 'core' );
     244    add_meta_box( 'submitdiv', __('Save'), 'attachment_submit_meta_box', null, 'side', 'core', array( '__back_compat_meta_box' => true ) );
    245245    add_action( 'edit_form_after_title', 'edit_form_image_editor' );
    246246
    247247    if ( wp_attachment_is( 'audio', $post ) ) {
    248         add_meta_box( 'attachment-id3', __( 'Metadata' ), 'attachment_id3_data_meta_box', null, 'normal', 'core' );
     248        add_meta_box( 'attachment-id3', __( 'Metadata' ), 'attachment_id3_data_meta_box', null, 'normal', 'core', array( '__back_compat_meta_box' => true ) );
    249249    }
    250250} else {
     
    253253
    254254if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post_type, 'post-formats' ) )
    255     add_meta_box( 'formatdiv', _x( 'Format', 'post format' ), 'post_format_meta_box', null, 'side', 'core' );
     255    add_meta_box( 'formatdiv', _x( 'Format', 'post format' ), 'post_format_meta_box', null, 'side', 'core', array( '__back_compat_meta_box' => true ) );
    256256
    257257// all taxonomies
     
    268268        $tax_meta_box_id = $tax_name . 'div';
    269269
    270     add_meta_box( $tax_meta_box_id, $label, $taxonomy->meta_box_cb, null, 'side', 'core', array( 'taxonomy' => $tax_name ) );
     270    add_meta_box( $tax_meta_box_id, $label, $taxonomy->meta_box_cb, null, 'side', 'core', array( 'taxonomy' => $tax_name, '__back_compat_meta_box' => true ) );
    271271}
    272272
    273273if ( post_type_supports( $post_type, 'page-attributes' ) || count( get_page_templates( $post ) ) > 0 ) {
    274     add_meta_box( 'pageparentdiv', $post_type_object->labels->attributes, 'page_attributes_meta_box', null, 'side', 'core' );
     274    add_meta_box( 'pageparentdiv', $post_type_object->labels->attributes, 'page_attributes_meta_box', null, 'side', 'core', array( '__back_compat_meta_box' => true ) );
    275275}
    276276
    277277if ( $thumbnail_support && current_user_can( 'upload_files' ) )
    278     add_meta_box('postimagediv', esc_html( $post_type_object->labels->featured_image ), 'post_thumbnail_meta_box', null, 'side', 'low');
     278    add_meta_box('postimagediv', esc_html( $post_type_object->labels->featured_image ), 'post_thumbnail_meta_box', null, 'side', 'low', array( '__back_compat_meta_box' => true ) );
    279279
    280280if ( post_type_supports($post_type, 'excerpt') )
    281     add_meta_box('postexcerpt', __('Excerpt'), 'post_excerpt_meta_box', null, 'normal', 'core');
     281    add_meta_box('postexcerpt', __('Excerpt'), 'post_excerpt_meta_box', null, 'normal', 'core', array( '__back_compat_meta_box' => true ) );
    282282
    283283if ( post_type_supports($post_type, 'trackbacks') )
    284     add_meta_box('trackbacksdiv', __('Send Trackbacks'), 'post_trackback_meta_box', null, 'normal', 'core');
     284    add_meta_box('trackbacksdiv', __('Send Trackbacks'), 'post_trackback_meta_box', null, 'normal', 'core', array( '__back_compat_meta_box' => true ) );
    285285
    286286if ( post_type_supports($post_type, 'custom-fields') )
    287     add_meta_box('postcustom', __('Custom Fields'), 'post_custom_meta_box', null, 'normal', 'core');
     287    add_meta_box('postcustom', __('Custom Fields'), 'post_custom_meta_box', null, 'normal', 'core', array( '__back_compat_meta_box' => true ) );
    288288
    289289/**
     
    300300// or if comments or pings are open.
    301301if ( comments_open( $post ) || pings_open( $post ) || post_type_supports( $post_type, 'comments' ) ) {
    302     add_meta_box( 'commentstatusdiv', __( 'Discussion' ), 'post_comment_status_meta_box', null, 'normal', 'core' );
     302    add_meta_box( 'commentstatusdiv', __( 'Discussion' ), 'post_comment_status_meta_box', null, 'normal', 'core', array( '__back_compat_meta_box' => true ) );
    303303}
    304304
     
    313313    // Comments meta box.
    314314    if ( comments_open( $post ) || pings_open( $post ) || $post->comment_count > 0 || post_type_supports( $post_type, 'comments' ) ) {
    315         add_meta_box( 'commentsdiv', __( 'Comments' ), 'post_comment_meta_box', null, 'normal', 'core' );
     315        add_meta_box( 'commentsdiv', __( 'Comments' ), 'post_comment_meta_box', null, 'normal', 'core', array( '__back_compat_meta_box' => true ) );
    316316    }
    317317}
    318318
    319319if ( ! ( 'pending' == get_post_status( $post ) && ! current_user_can( $post_type_object->cap->publish_posts ) ) )
    320     add_meta_box('slugdiv', __('Slug'), 'post_slug_meta_box', null, 'normal', 'core');
     320    add_meta_box('slugdiv', __('Slug'), 'post_slug_meta_box', null, 'normal', 'core', array( '__back_compat_meta_box' => true ) );
    321321
    322322if ( post_type_supports( $post_type, 'author' ) && current_user_can( $post_type_object->cap->edit_others_posts ) ) {
    323     add_meta_box( 'authordiv', __( 'Author' ), 'post_author_meta_box', null, 'normal', 'core' );
     323    add_meta_box( 'authordiv', __( 'Author' ), 'post_author_meta_box', null, 'normal', 'core', array( '__back_compat_meta_box' => true ) );
    324324}
    325325
  • branches/5.0/src/wp-admin/includes/template.php

    r43496 r43779  
    10521052                    if ( false == $box || ! $box['title'] )
    10531053                        continue;
     1054
     1055                    // Don't show boxes in the block editor, if they're just here for back compat.
     1056                    if ( $screen->is_block_editor() && isset( $box['args']['__back_compat_meta_box'] ) && $box['args']['__back_compat_meta_box'] ) {
     1057                        continue;
     1058                    }
     1059
     1060                    // Don't show boxes in the block editor that aren't compatible with the block editor.
     1061                    if ( $screen->is_block_editor() && isset( $box['args']['__block_editor_compatible_meta_box'] ) && ! $box['args']['__block_editor_compatible_meta_box'] ) {
     1062                        continue;
     1063                    }
     1064
     1065                    $block_compatible = true;
     1066                    if ( isset( $box['args']['__block_editor_compatible_meta_box'] ) ) {
     1067                        $block_compatible = (bool) $box['args']['__block_editor_compatible_meta_box'];
     1068                        unset( $box['args']['__block_editor_compatible_meta_box'] );
     1069                    }
     1070
     1071                    if ( isset( $box['args']['__back_compat_meta_box'] ) ) {
     1072                        $block_compatible |= (bool) $box['args']['__back_compat_meta_box'];
     1073                        unset( $box['args']['__back_compat_meta_box'] );
     1074                    }
     1075
    10541076                    $i++;
    10551077                    $hidden_class = in_array($box['id'], $hidden) ? ' hide-if-js' : '';
     
    10711093                    echo "<h2 class='hndle'><span>{$box['title']}</span></h2>\n";
    10721094                    echo '<div class="inside">' . "\n";
     1095
     1096                    if ( WP_DEBUG && ! $screen->is_block_editor() && ! isset( $_GET['meta-box-loader'] ) ) {
     1097                        if ( is_array( $box['callback'] ) ) {
     1098                            $reflection = new ReflectionMethod( $box['callback'][0], $box['callback'][1] );
     1099                        } else {
     1100                            $reflection = new ReflectionFunction( $box['callback'] );
     1101                        }
     1102
     1103                        // Don't show an error if it's an internal PHP function.
     1104                        if ( ! $reflection->isInternal() ) {
     1105
     1106                            // Only show errors if the meta box was registered by a plugin.
     1107                            $filename = $reflection->getFileName();
     1108                            if ( strpos( $filename, WP_PLUGIN_DIR ) === 0 ) {
     1109                                $filename = str_replace( WP_PLUGIN_DIR, '', $filename );
     1110                                $filename = preg_replace( '|^/([^/]*/).*$|', '\\1', $filename );
     1111
     1112                                $plugins = get_plugins();
     1113                                foreach ( $plugins as $name => $plugin ) {
     1114                                    if ( strpos( $name, $filename ) === 0 ) {
     1115                                        ?>
     1116                                            <div class="error inline">
     1117                                                <p>
     1118                                                    <?php
     1119                                                        /* translators: %s: the name of the plugin that generated this meta box. */
     1120                                                        printf( __( "This meta box, from the %s plugin, isn't compatible with the block editor." ), "<strong>{$plugin['Name']}</strong>" );
     1121                                                    ?>
     1122                                                </p>
     1123                                            </div>
     1124                                        <?php
     1125                                    }
     1126                                }
     1127                            }
     1128                        }
     1129                    }
     1130
    10731131                    call_user_func($box['callback'], $object, $box);
    10741132                    echo "</div>\n";
Note: See TracChangeset for help on using the changeset viewer.