WordPress.org

Make WordPress Core


Ignore:
Timestamp:
10/29/2018 02:42:23 AM (14 months ago)
Author:
pento
Message:

Block Editor: Fix meta boxes not showing.

The block editor needs to duplicate the classic meta box behaviour, so it can extract the registered meta boxes, and import them into the block editor.

To match the classic editor behaviour as closely as possible, this moves the relevant code from the classic editor, into a new function, so it can be called by both.

Props pento, peterwilsoncc.
Fixes #45172.

File:
1 edited

Legend:

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

    r43779 r43837  
    226226require_once( ABSPATH . 'wp-admin/includes/meta-boxes.php' );
    227227
    228 
    229 $publish_callback_args = array( '__back_compat_meta_box' => true );
    230 if ( post_type_supports($post_type, 'revisions') && 'auto-draft' != $post->post_status ) {
    231     $revisions = wp_get_post_revisions( $post_ID );
    232 
    233     // We should aim to show the revisions meta box only when there are revisions.
    234     if ( count( $revisions ) > 1 ) {
    235         reset( $revisions ); // Reset pointer for key()
    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 ) );
    238     }
    239 }
    240 
    241 if ( 'attachment' == $post_type ) {
    242     wp_enqueue_script( 'image-edit' );
    243     wp_enqueue_style( 'imgareaselect' );
    244     add_meta_box( 'submitdiv', __('Save'), 'attachment_submit_meta_box', null, 'side', 'core', array( '__back_compat_meta_box' => true ) );
    245     add_action( 'edit_form_after_title', 'edit_form_image_editor' );
    246 
    247     if ( wp_attachment_is( 'audio', $post ) ) {
    248         add_meta_box( 'attachment-id3', __( 'Metadata' ), 'attachment_id3_data_meta_box', null, 'normal', 'core', array( '__back_compat_meta_box' => true ) );
    249     }
    250 } else {
    251     add_meta_box( 'submitdiv', __( 'Publish' ), 'post_submit_meta_box', null, 'side', 'core', $publish_callback_args );
    252 }
    253 
    254 if ( 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', array( '__back_compat_meta_box' => true ) );
    256 
    257 // all taxonomies
    258 foreach ( get_object_taxonomies( $post ) as $tax_name ) {
    259     $taxonomy = get_taxonomy( $tax_name );
    260     if ( ! $taxonomy->show_ui || false === $taxonomy->meta_box_cb )
    261         continue;
    262 
    263     $label = $taxonomy->labels->name;
    264 
    265     if ( ! is_taxonomy_hierarchical( $tax_name ) )
    266         $tax_meta_box_id = 'tagsdiv-' . $tax_name;
    267     else
    268         $tax_meta_box_id = $tax_name . 'div';
    269 
    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 ) );
    271 }
    272 
    273 if ( 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', array( '__back_compat_meta_box' => true ) );
    275 }
    276 
    277 if ( $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', array( '__back_compat_meta_box' => true ) );
    279 
    280 if ( post_type_supports($post_type, 'excerpt') )
    281     add_meta_box('postexcerpt', __('Excerpt'), 'post_excerpt_meta_box', null, 'normal', 'core', array( '__back_compat_meta_box' => true ) );
    282 
    283 if ( post_type_supports($post_type, 'trackbacks') )
    284     add_meta_box('trackbacksdiv', __('Send Trackbacks'), 'post_trackback_meta_box', null, 'normal', 'core', array( '__back_compat_meta_box' => true ) );
    285 
    286 if ( post_type_supports($post_type, 'custom-fields') )
    287     add_meta_box('postcustom', __('Custom Fields'), 'post_custom_meta_box', null, 'normal', 'core', array( '__back_compat_meta_box' => true ) );
    288 
    289 /**
    290  * Fires in the middle of built-in meta box registration.
    291  *
    292  * @since 2.1.0
    293  * @deprecated 3.7.0 Use 'add_meta_boxes' instead.
    294  *
    295  * @param WP_Post $post Post object.
    296  */
    297 do_action( 'dbx_post_advanced', $post );
    298 
    299 // Allow the Discussion meta box to show up if the post type supports comments,
    300 // or if comments or pings are open.
    301 if ( 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', array( '__back_compat_meta_box' => true ) );
    303 }
    304 
    305 $stati = get_post_stati( array( 'public' => true ) );
    306 if ( empty( $stati ) ) {
    307     $stati = array( 'publish' );
    308 }
    309 $stati[] = 'private';
    310 
    311 if ( in_array( get_post_status( $post ), $stati ) ) {
    312     // If the post type support comments, or the post has comments, allow the
    313     // Comments meta box.
    314     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', array( '__back_compat_meta_box' => true ) );
    316     }
    317 }
    318 
    319 if ( ! ( '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', array( '__back_compat_meta_box' => true ) );
    321 
    322 if ( 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', array( '__back_compat_meta_box' => true ) );
    324 }
    325 
    326 /**
    327  * Fires after all built-in meta boxes have been added.
    328  *
    329  * @since 3.0.0
    330  *
    331  * @param string  $post_type Post type.
    332  * @param WP_Post $post      Post object.
    333  */
    334 do_action( 'add_meta_boxes', $post_type, $post );
    335 
    336 /**
    337  * Fires after all built-in meta boxes have been added, contextually for the given post type.
    338  *
    339  * The dynamic portion of the hook, `$post_type`, refers to the post type of the post.
    340  *
    341  * @since 3.0.0
    342  *
    343  * @param WP_Post $post Post object.
    344  */
    345 do_action( "add_meta_boxes_{$post_type}", $post );
    346 
    347 /**
    348  * Fires after meta boxes have been added.
    349  *
    350  * Fires once for each of the default meta box contexts: normal, advanced, and side.
    351  *
    352  * @since 3.0.0
    353  *
    354  * @param string  $post_type Post type of the post.
    355  * @param string  $context   string  Meta box context.
    356  * @param WP_Post $post      Post object.
    357  */
    358 do_action( 'do_meta_boxes', $post_type, 'normal', $post );
    359 /** This action is documented in wp-admin/edit-form-advanced.php */
    360 do_action( 'do_meta_boxes', $post_type, 'advanced', $post );
    361 /** This action is documented in wp-admin/edit-form-advanced.php */
    362 do_action( 'do_meta_boxes', $post_type, 'side', $post );
     228register_and_do_post_meta_boxes( $post );
    363229
    364230add_screen_option('layout_columns', array('max' => 2, 'default' => 2) );
Note: See TracChangeset for help on using the changeset viewer.