カスタムフィールドを追加するプラグインなどを使用して、記事の編集画面の使い勝手をよくしていくと、編集画面にメタボックスがたくさん並びます。

メタボックスはドラッグアンドドロップでユーザーごとに好きな位置に動かせるのですが、これがお仕事のサイトだったりすると、マニュアル作成時に問題になったりします。

「マニュアルと同じところに入力欄がないんだけど!!」
しかも、表示位置の設定情報は簡単にクリアすることができません。

ということで、このユーザーごとの設定を効かせないようにすることはできないかなーと、コアファイルを覗いてみることにしました。

メタボックスを出力しているところは?

メタボックスを出力しているコードを特定するために、まずは編集画面のメタボックスを囲っているHTMLコードで、wp-adminディレクトリ内をgrepしてみます。

wp-admin/edit-form-advanced.phpの699行目に記載されているようなので、実際に中を見てみます。

do_meta_boxes()で出力しているみたい。
ということで、次はdo_meta_boxes()でgrep。

wp-admin/includes/template.phpの995行目の、do_meta_boxes()を見てみると…

1011行目から1019行目の間でソートしてる!

ソートを停止させよう

1011行目の、

の判定をfalseにすればいいのだけど、$already_sortedはfalseにするフックやらなんやらがないご様子。
ということで、get_user_option( “meta-box-order_$page” )をfalseにすることに。
get_user_option()をgrepして探してみます。

wp-includes/user.phpの451行目を確認してみると…

apply_filters()を発見!!これでfalseにできるよー
※実際は$screenとかも遡って見てたりしましたが、もう$optionとかをvar_dump()してみちゃうほうが早い。

カスタムフィールドのユーザーごとの並び順設定を読み込まないようにした

下のコードで読み込みが停止できます。投稿タイプごとに設定が必要なので注意。