#40621 closed enhancement (invalid)
Content of multiple metaboxes into one custom metabox - nonce error
| Reported by: |
|
Owned by: | |
|---|---|---|---|
| Milestone: | Priority: | normal | |
| Severity: | normal | Version: | 4.7.4 |
| Component: | Options, Meta APIs | Keywords: | |
| Focuses: | Cc: |
Description
WP is full of multiple standalone metaboxes and I want to put all these metaboxes into one metabox. So far this works good with WP default metaboxes, but not with external metaboxes from plugins.
My code is like this:
Full Source:
https://developer.wordpress.org/reference/functions/add_meta_box
class someClass {
public function __construct() {
...
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
add_action( 'save_post', array( $this, 'save' ) );
}
public function add_meta_box( $post_type ) {
$post_types = array( 'recipes' );
if ( in_array( $post_type, $post_types ) ) {
add_meta_box( 'some_meta_box_name', __( 'Meta Box Headline', 'textdomain' ), array( $this, 'render_meta_box_content' ), $post_type, 'advanced', 'high' );
}
}
public function save( $post_id ) {
if ( ! isset( $_POST['myplugin_inner_custom_box_nonce'] ) ) {
return $post_id;
}
$nonce = $_POST['myplugin_inner_custom_box_nonce'];
if ( ! wp_verify_nonce( $nonce, 'myplugin_inner_custom_box' ) ) {
return $post_id;
}
...
}
public function render_meta_box_content( $post ) {
wp_nonce_field( 'myplugin_inner_custom_box', 'myplugin_inner_custom_box_nonce' ); ?>
<ul class="tabbed-menu">
<li><a href="#">Recipes Categories</a></li>
<li><a href="#">Plugin link</a></li>
<li><a href="#">Another plugin link</a></li>
</ul>
<ul class="tabbed-content">
<li>
<?php $box['args']['taxonomy'] = 'recipes_category';
$post_categories_meta_box( $post, $box ); ?>
</li>
<li>Plugin metabox</li>
<li>Another plugin metabox</li>
</ul>
<?php
}
When I look into a plugin's code for metabox
add_meta_box( 'woo_sl_box', 'Licensing', 'woo_license_meta_box', 'recipes', 'normal', 'core' );
I was hoping that I could use the plugin's function in my own metabox after using unset( $wp_meta_boxes[]...) first, like this
<li><?php woo_license_meta_box(); ?></li>
However, saving doesn't work due to the different
nonce
that's being used between the plugin and my own metabox. While when using WP default metaboxes, e.g.:
$box['args']['taxonomy'] = 'recipes_category'; $post_categories_meta_box( $post, $box );
there's no nonce error when clicking on the update button.
Can anyone explain why? And is there a better way to handle what I'm trying to do? (e.g. hooks/filters that are already available)
This question is better suited to the support forums where you'll be more likely to get an answer.