metaboxをドラッグしたり折りたためなくする方法

はじめに

wordpressの投稿画面の各メタボックス(公開とかフォーマットとかカテゴリとか)はドラッグで移動可能だし、クリックすると折りたたむことができる。
今回はそれを無効化したい。

ネットで調べると、以下のようにpostboxスクリプトをwp_deregister_script しているコードが見受けられる。しかし、これだと、公開状態を変える際のjs処理も除外されてしまい、まともに動かなくなってしまった。

1
2
3
4
function remove_postbox() {
wp_deregister_script('postbox');
}
add_action( 'admin_init', 'remove_postbox' );

JavaScript と CSS で無効化

仕方ないので、JavaScriptとCSSでこの機能をなくすことを目指す。
とりあえず、管理画面でbodyの終わりにjsファイルを読むのようにしてjsファイルをbodyタグ終わりで読み込む。

そして、以下のようにして無効化する。

1
2
3
4
5
6
7
8
jQuery(function($){
//metaboxのドラッグを無効にする
$('.meta-box-sortables').sortable({
disabled: true
});
//metaboxのクリックで折りたたむのを無効にする
$('.postbox h3').unbind('click.postboxes');
});

見た目の修正

最後に、このままだとポインターを合わせた時にカーソルが変わってしまうので、それを元に戻す。あと折りたたみの▲ボタンも消す。
これはcssから行うので、管理画面のいらないものを消すのようにしてcssファイルを読めるようにして、そちらに記述する。

1
2
3
4
5
6
7
8
9
10
/*metaboxのカーソルをデフォルトに戻す*/
.js .postbox .hndle,
.js .postbox h3{
cursor:default;
}
/*▼の表示を消す*/
.js .postbox .handlediv {
display: none;
}