WordPress:メタボックスの開閉機能やドラッグ機能を無効化する方法

WordPress:メタボックスの開閉機能やドラッグ機能を無効化する方法

WordPressの管理画面にあるメタボックスは、デフォルトで開閉して中身の表示・非表示を切り替えたりドラッグして表示位置を変更させることができますが、それらの機能を無効化する方法です。

メタボックスとは、例えばWordPressの記事投稿画面で抜粋やカテゴリーの入力・選択を表示しているボックスのことで、これはボックスを開閉したりドラッグして移動させることができるようになっています。
ただ、この開閉できる機能やドラッグできる機能があることによって、入力欄が消えてしまったとか勝手にボックスが移動しているみたいな連絡を(そんなわけないと思いつつ...)まれにですが受けることがあるので、そういったクライアント向けの対策としてメタボックスの開閉機能やドラッグ機能を無効化していきます。

実装にはfunctions.phpに下記を記述します。

functions.php

add_action( 'admin_footer-post-new.php', 'disable_switching_dragging_meta_box' );
add_action( 'admin_footer-post.php', 'disable_switching_dragging_meta_box' );
function disable_switching_dragging_meta_box() {
?>
  <script>
    jQuery(function($) {
      $('.postbox').removeClass('closed');
      $('.postbox .hndle').off('click').css('cursor', 'default');
      $('.meta-box-sortables').sortable('disable');
      $('.postbox .handlediv').hide();
    });
  </script>
<?php
}

内容としてはjQueryを使用して開閉機能とドラッグ機能の両方を無効化していて、まず、閉じた状態のメタボックスがなく常に開いた状態で表示させるために$('.postbox').removeClass('closed');を記述します。
2行目の$('.postbox .hndle').off('click').css('cursor', 'default');については、クリックしてメタボックスが開閉されるという動きを無効化しつつ、そのままだとドラッグできることを表すカーソルになってしまっているのをdefaultに指定しておきます。
3行目はメタボックスをドラッグできる機能を無効化にしており、最後に矢印を表示している要素を.hide()で非表示にします。

以前こういったことをやった際はwp_deregister_script( 'postbox' );を使ってとりあえずどちらの機能も無効化して、いろいろ非表示にしたい部分は別途CSSを記述するという形をとっていたのですが、この方法だと詳しく調査していませんが他の部分のJSに影響が出たり、結局別途CSSを書く必要があったりしたので、それならいっそのことすべてjQueryでやってしまえばと思い、最近はこの方法を利用しています。

Close the search window,
please press close button or esc key.