你可以翻转rw_maybe_include()
围绕并创建一个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;
}
然后使用
exclude_on
钥匙
$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\' )
),
最后,根据新函数注册元数据库。
/**
* 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\' );