You could flip the rw_maybe_include()
function around and create a rw_maybe_exclude()
/**
* Check if meta boxes is included
*
* @return bool
*/
function rw_maybe_exlude( $conditions ) {
// Include in back-end only
if ( ! defined( 'WP_ADMIN' ) || ! WP_ADMIN ) {
return true;
}
// Always include for ajax
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
return false;
}
if ( isset( $_GET['post'] ) ) {
$post_id = $_GET['post'];
}
elseif ( isset( $_POST['post_ID'] ) ) {
$post_id = $_POST['post_ID'];
}
else {
$post_id = false;
}
$post_id = (int) $post_id;
$post = get_post( $post_id );
foreach ( $conditions as $cond => $v ) {
// Catch non-arrays too
if ( ! is_array( $v ) ) {
$v = array( $v );
}
switch ( $cond ) {
case 'id':
if ( in_array( $post_id, $v ) ) {
return true;
}
break;
case 'parent':
$post_parent = $post->post_parent;
if ( in_array( $post_parent, $v ) ) {
return true;
}
break;
case 'slug':
$post_slug = $post->post_name;
if ( in_array( $post_slug, $v ) ) {
return true;
}
break;
case 'template':
$template = get_post_meta( $post_id, '_wp_page_template', true );
if ( in_array( $template, $v ) ) {
return true;
}
break;
}
}
// If no condition matched
return false;
}
Then define your metabox with an exclude_on
key
$prefix = 'rw_';
global $meta_boxes;
$meta_boxes = array();
$meta_boxes[] = array(
'title' => __( 'Meta Box Title', 'rwmb' ),
'pages' => array( 'post', 'page' ),
'fields' => array(
array(
'name' => __( 'Your images', 'rwmb' ),
'id' => "{$prefix}img",
'type' => 'plupload_image',
),
),
'exclude_on' => array(
'template' => array( 'template-home.php' )
),
And finally register your metaboxes with a check against your new function.
/**
* Register meta boxes
*
* @return void
*/
function rw_register_meta_boxes()
{
global $meta_boxes;
// Make sure there's no errors when the plugin is deactivated or during upgrade
if ( class_exists( 'RW_Meta_Box' ) ) {
foreach ( $meta_boxes as $meta_box ) {
if ( isset( $meta_box['exclude_on'] ) && rw_maybe_exlude( $meta_box['exclude_on'] ) ) {
continue;
}
new RW_Meta_Box( $meta_box );
}
}
}
add_action( 'admin_init', 'rw_register_meta_boxes' );