Skip to content

Instantly share code, notes, and snippets.

@DevinWalker
Created May 14, 2014 20:32
Show Gist options
  • Save DevinWalker/ee9d4e53883460c6bbb8 to your computer and use it in GitHub Desktop.
Save DevinWalker/ee9d4e53883460c6bbb8 to your computer and use it in GitHub Desktop.
This code removed the Revolution Slider metabox on pages, posts and CTPs
/**
* Remove Rev Slider Metabox
*/
if ( is_admin() ) {
function remove_revolution_slider_meta_boxes() {
remove_meta_box( 'mymetabox_revslider_0', 'page', 'normal' );
remove_meta_box( 'mymetabox_revslider_0', 'post', 'normal' );
remove_meta_box( 'mymetabox_revslider_0', 'YOUR_CUSTOM_POST_TYPE', 'normal' );
}
add_action( 'do_meta_boxes', 'remove_revolution_slider_meta_boxes' );
}
@mattjdever
Copy link

Also, if anyone is using this for removing other annoying metaboxes put by plugin creators that assume you want thier metaboxes in all of your CPT edit pages, check if the metabox is in the normal-sortables div, or the advanced-sortables div. If it is in advanced-sortables, just change the last parameter to 'advanced'

example:
remove_meta_box('page-links-to', $post_type, 'advanced');

Note to plugin developers: Please consider the effect of your cool ideas on other plugins that may be using Custom Post Types. Either limit the effect of your metaboxes by explicitly attaching them to the post type, or allow the toggling of them in other CPTs.

Thanks again!

@jcorreia
Copy link

complemented to woocomerce products, categories, etc with post types in this page https://docs.woocommerce.com/document/installed-taxonomies-post-types/


function remove_revolution_slider_meta_boxes() {
	remove_meta_box( 'mymetabox_revslider_0', 'page', 'normal' );
	remove_meta_box( 'mymetabox_revslider_0', 'post', 'normal' );
	remove_meta_box( 'mymetabox_revslider_0', 'product', 'normal' );
        remove_meta_box( 'mymetabox_revslider_0', 'product_cat', 'normal' );
        remove_meta_box( 'mymetabox_revslider_0', 'product_tag', 'normal' );
        remove_meta_box( 'mymetabox_revslider_0', 'product_variation', 'normal' );
        remove_meta_box( 'mymetabox_revslider_0', 'product_visibility', 'normal' );
        remove_meta_box( 'mymetabox_revslider_0', 'shop_order', 'normal' );
        remove_meta_box( 'mymetabox_revslider_0', 'shop_order_status', 'normal' );
        remove_meta_box( 'mymetabox_revslider_0', 'shop_order_refund', 'normal' );
        remove_meta_box( 'mymetabox_revslider_0', 'shop_coupon', 'normal' );
        remove_meta_box( 'mymetabox_revslider_0', 'shop_webhook', 'normal' );

}

add_action( 'do_meta_boxes', 'remove_revolution_slider_meta_boxes' );

Thanks !

@brianlayman
Copy link

brianlayman commented Aug 21, 2019

The do_meta_boxes filter is run 3 times for every editor page load. Once for each context.

So using jcorreia's example from the woocommerce docs, it will call remove_meta_box 36 times (3 * 12) and most of those calls are unneeded. All 36 of them are unneeded if you aren't even on one of those post types. You only need to remove the metabox when you are opening one of the editors for those particular post types.

There are 3 parameters sent in the do_meta_boxes filter.

So add the action this way:
add_action( 'do_meta_boxes', 'remove_unwanted_metaboxes', 10, 3 );

And then do something like this:

function remove_unwanted_metaboxes( $type, $context, $post ) {
	// This action will be executed for all context: normal, advanced and side
	// If you want to run it only for the normal context, you can.
	if ( 'normal' !== $context ) return; // Remove this line and it will check all contexts in case the box has been moved by user

	// get_current_screen() is defined on most admin pages, but not all.
	// The ones that don't have it won't have metaboxes we care about.
	if ( function_exists( 'get_current_screen' ) ) {
		$curPostType = get_post_type();  // Get the current posttype
		$postTypesToCheck = array( 'posttype1', 'posttype2', 'page' );  // PostTypes hiding this metabox. This could be an object var from $this
		if ( in_array ( $curPostType, $postTypesToCheck ) ) {
			remove_meta_box( 'wpseo_meta', $curPostType, $context );
			remove_meta_box( 'postcustom', $curPostType, $context );
			remove_meta_box( 'rs-addon-typewriter-meta', $curPostType, $context );
			remove_meta_box( 'mymetabox_revslider_0', $curPostType, $context ); // Could add _1 _2 etc in case of multiple sliders per page
		}
	}
}

@Mark-Creeten
Copy link

Mark-Creeten commented Sep 19, 2019

@brianlayman, did you forgot to set the $postType?

like:

 function remove_unwanted_metaboxes( $type, $context, $post ) {
	// This action will be executed for all context: normal, advanced and side
	// If you want to run it only for the normal context, you can.
	// Remove this line and it will check all contexts in case the box has been moved by user
	if ( 'normal' !== $context ) return; 

	// get_current_screen() is defined on most admin pages, but not all.
	// The ones that don't have it won't have metaboxes we care about.
	if ( function_exists( 'get_current_screen' ) ) {
		//get the current post type to use in the in_array()
		$postType = get_post_type();
		// PostTypes hiding this metabox. This could be an object var from $this
		$postTypes = array( 'posttype1', 'posttype2', 'page' ); 
		if ( in_array ( $postType, $postTypes ) ) {
			remove_meta_box( 'wpseo_meta', $postType, $context);
			remove_meta_box( 'postcustom', $postType, $context );
			remove_meta_box( 'rs-addon-typewriter-meta', $postType, $context );
			remove_meta_box( 'mymetabox_revslider_0', $postType, $context ); // Could add _1 _2 etc in case of multiple sliders per page
		}
	}
}

in addition to the solution from @brianlayman, if you have Revolution slider version 6, the metabox ID == 'eg-meta-box'

@brianlayman
Copy link

brianlayman commented Sep 19, 2019

@Mark-Creeten
Ah, yes, my original code had a different condition. So I edited that sample in the gist text editor and didn't test the edit on a site. Thanks for catching that.

@ethanclevenger91
Copy link

Slider Revolution version 6.5.19, the meta box slug is slider_revolution_metabox and its context is side. So wherever you put it, the call needs to be:

remove_meta_box('slider_revolution_metabox', $post_type, 'side');

@brianlayman
Copy link

Slider Revolution version 6.5.19, the meta box slug is slider_revolution_metabox and its context is side.

In my example then, the context check could handled as a switch clause to have the remove_meta_box calls still only execute once for each appropriate context.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment