Change position of Featured image Metabox in wordpress

特征图片的位置一开始已经写死在Wordpress 核心里了,如果你想把它移到左边区域,或者边栏的靠前位置,下面或许是一个解决方案。

首先是去除掉特色图片的metabox,然后使用 add_meta_box 重新添加。 post_thumbnail_meta_box 是一个已经定义好的函数,可以直接调用。

前提:你必须在模板里已经启用 Post Thumbnails

add_theme_support( 'post-thumbnails' );
add_theme_support( 'post-thumbnails', array( 'post' ) );          // Posts only
add_theme_support( 'post-thumbnails', array( 'page' ) );          // Pages only
add_theme_support( 'post-thumbnails', array( 'post', 'movie' ) ); // Posts and Movies

然后:

add_action('do_meta_boxes', 'customposttype_image_box');

function customposttype_image_box() {
    remove_meta_box( 'postimagediv', '', 'side' );
    add_meta_box('postimagediv', __('Featured Image'), 'post_thumbnail_meta_box', 'post', 'side', 'high');
    add_meta_box('postimagediv', __('Page Featured Image'), 'post_thumbnail_meta_box', 'page', 'side', 'high');
}

在使用中发现,可能会对 custom post type 无效导致 特色图片的 metabox 消失。可能是因为注册 custom post type 的时间晚了,如果在 action “after_setup_theme” 的时候注册,运行正常!

Remove Mappress metabox from WP admin except specific page template

Mappress 是一个很好用的google地图插件,但是它在后台的每个编辑页面里都添加了一个Metabox,大多时候这都不是我们想要的,所以我创建了一个 page-contact.php 的页面模板。让它出现在选择了该页面模板的页面。

if (is_admin()) :
	function remove_plugin_metaboxes(){
		global $post;
		//var_dump(get_page_template_slug($post->ID));
		if(get_page_template_slug($post->ID) != "page-templates/page-contact.php"){
			remove_meta_box('mappress', 'page', 'normal');
			remove_meta_box('mappress', 'page', 'side');
		}
	}
	add_action( 'do_meta_boxes', 'remove_plugin_metaboxes' ); 
endif;