Add a metabox for Gutenberg

Currently the easiest way to make sure the post meta
is added to the Gutenberg editor, since the featured
image metabox hook/filter is no longer available.

Presumably this will eventually be replaced with a true
block, or whatever it will be, but this works for the moment.
This commit is contained in:
Robin Cornett
2018-01-06 13:26:20 -05:00
parent 38a05ba964
commit fb8552f88d
2 changed files with 57 additions and 3 deletions
@@ -10,6 +10,12 @@
*/
class Display_Featured_Image_Genesis_Post_Meta {
/**
* ID for our new metabox.
* @var string
*/
protected $metabox = 'displayfeaturedimagegenesis';
/**
* Post meta key to disable buttons
* @var string
@@ -22,6 +28,41 @@ class Display_Featured_Image_Genesis_Post_Meta {
*/
protected $move = '_displayfeaturedimagegenesis_move';
/**
* For Gutenberg, add a new metabox, since the thumbnail hooks are no longer present.
* Should eventually be replaced with a block.
*
* @since 2.7.0
* @param $post_type
* @param $post
*/
public function add_metabox( $post_type, $post ) {
if ( ! post_type_supports( $post_type, 'thumbnail' ) ) {
return;
}
$classic_editor = filter_input( INPUT_GET, 'classic-editor', FILTER_VALIDATE_BOOLEAN );
if ( null !== $classic_editor ) {
return;
}
add_meta_box(
$this->metabox,
__( 'Display Featured Image', 'display-featured-image-genesis' ),
array( $this, 'do_metabox' ),
$post_type,
'side',
'low'
);
}
/**
* Output the metabox.
* @param $post
* @param $args
*/
public function do_metabox( $post, $args ) {
echo $this->get_metabox_content( $post->ID );
}
/**
* Build the metabox with the checkbox setting.
* @since 2.5.0
@@ -32,7 +73,17 @@ class Display_Featured_Image_Genesis_Post_Meta {
* @return string
*/
public function meta_box( $content, $post_id ) {
return $this->get_metabox_content( $post_id ) . $content;
}
/**
* Get the metabox content/fields.
*
* @param $post_id
*
* @return string
*/
protected function get_metabox_content( $post_id ) {
$output = wp_nonce_field( 'displayfeaturedimagegenesis_post_save', 'displayfeaturedimagegenesis_post_nonce', true, false );
$select = $this->get_select();
if ( $select ) {
@@ -47,7 +98,7 @@ class Display_Featured_Image_Genesis_Post_Meta {
}
}
return $output . $content;
return $output;
}
/**
@@ -102,7 +102,7 @@ class Display_Featured_Image_Genesis {
* @param $settings
* @param $taxonomies
*/
function __construct( $admin, $author, $common, $customizer, $description, $helptabs, $output, $post_meta, $rss, $settings, $taxonomies, $widgets ) {
public function __construct( $admin, $author, $common, $customizer, $description, $helptabs, $output, $post_meta, $rss, $settings, $taxonomies, $widgets ) {
$this->admin = $admin;
$this->author = $author;
$this->common = $common;
@@ -142,10 +142,13 @@ class Display_Featured_Image_Genesis {
add_action( 'widgets_init', array( $this->widgets, 'register_shortcodes' ) );
add_action( 'admin_enqueue_scripts', array( $this->widgets, 'enqueue_scripts' ) );
// Taxonomies, Author, Post Meta
// Taxonomies, Authors
add_filter( 'displayfeaturedimagegenesis_get_taxonomies', array( $this->taxonomies, 'remove_post_status_terms' ) );
add_action( 'admin_init', array( $this->taxonomies, 'set_taxonomy_meta' ) );
add_action( 'admin_init', array( $this->author, 'set_author_meta' ) );
// Post Meta
add_action( 'add_meta_boxes', array( $this->post_meta, 'add_metabox' ), 10, 2 );
add_filter( 'admin_post_thumbnail_html', array( $this->post_meta, 'meta_box' ), 10, 2 );
add_action( 'save_post', array( $this->post_meta, 'save_meta' ) );