2026年5月20日
2026年5月20日
WordPressのメタボックスが表示されない場合の解決方法
はじめに
プラグインで追加したメタボックスが投稿編集画面に表示されない、以前は見えていたメタボックスが突然消えた、ブロックエディターに切り替えたらサイドバーのメタボックスが出なくなった。メタボックスの非表示には画面設定やブロックエディターとの互換性が関係しています。
症状・原因
メタボックスが表示されない主な原因:
- 画面オプションで非表示:ユーザーごとの表示設定が「非表示」になっている
- ブロックエディターとの非互換:
__block_editor_compatible_meta_boxの設定が必要 - フックの優先度問題:
add_meta_boxesフックのタイミングが合っていない - 投稿タイプの指定ミス:第3引数の投稿タイプが間違っている
- プラグイン競合:別のプラグインがメタボックスを削除している
解決手順
ステップ1:画面オプションを確認する
最も多い原因は画面オプションでの非表示設定です。
1. 投稿編集画面の右上「画面オプション」をクリック
2. 表示したいメタボックスのチェックが外れていないか確認
3. チェックを入れて閉じると表示される
ステップ2:add_meta_boxの実装を確認する
// functions.php — メタボックスを正しく追加する
add_action('add_meta_boxes', function() {
add_meta_box(
'my_meta_box_id', // ID(ユニークな文字列)
'カスタム情報', // タイトル
'render_my_meta_box', // コールバック関数
['post', 'page'], // 投稿タイプ(配列で複数指定可)
'normal', // コンテキスト: normal/side/advanced
'high' // 優先度: high/core/default/low
);
});
function render_my_meta_box($post) {
wp_nonce_field('my_meta_nonce_action', 'my_meta_nonce');
$value = get_post_meta($post->ID, '_my_field', true);
echo '<input type="text" name="my_field" value="' . esc_attr($value) . '">';
}
ステップ3:ブロックエディターでメタボックスを表示する
ブロックエディター(Gutenberg)ではメタボックスのサポートが限定されます。
// ブロックエディターでもメタボックスを表示する
add_action('add_meta_boxes', function() {
add_meta_box(
'my_meta_box_id',
'カスタム情報',
'render_my_meta_box',
'post',
'normal',
'high',
// ブロックエディター互換を明示
['__block_editor_compatible_meta_box' => true]
);
});
ステップ4:ブロックエディターを無効化して確認する
// functions.php — 特定の投稿タイプでブロックエディターを無効化
add_filter('use_block_editor_for_post_type', function($use_block_editor, $post_type) {
if ($post_type === 'post') {
return false; // クラシックエディターに切り替え
}
return $use_block_editor;
}, 10, 2);
または「Classic Editor」プラグインをインストールして管理画面から設定する方法もあります。
ステップ5:メタボックスの表示をデバッグする
// メタボックスが登録されているか確認
add_action('add_meta_boxes', function() {
global $wp_meta_boxes;
error_log('Meta boxes: ' . print_r(array_keys($wp_meta_boxes), true));
}, 999); // 優先度999で最後に実行
ステップ6:プラグイン競合の確認
# WP-CLIで全プラグインを無効化してメタボックスを確認
wp plugin deactivate --all
# ブラウザで投稿編集画面を開いてメタボックスが出るか確認
# 問題なければプラグインを一つずつ有効化して特定
wp plugin activate plugin-name
ステップ7:ユーザーメタのリセット
画面オプションの設定はユーザーメタに保存されています。
// 特定ユーザーのメタボックス表示設定をリセット
delete_user_meta(get_current_user_id(), 'metaboxhidden_post');
delete_user_meta(get_current_user_id(), 'metaboxhidden_page');
注意事項
- 画面オプションの設定はユーザーごとに保存されます。他のユーザーは別々に設定が必要です。
- ブロックエディターでは
sideコンテキストのメタボックスのみサイドバーに表示されます。 - ACF(Advanced Custom Fields)を使う場合はブロックエディター対応のフィールドグループ設定が必要です。
まとめ
メタボックスが表示されない場合はまず「画面オプション」のチェックを確認してください。ブロックエディターでは__block_editor_compatible_meta_boxの設定が必要です。それでも解決しない場合はプラグイン競合を切り分けます。関連記事:カスタムフィールドが保存できない場合、ブロックエディターがクラッシュする場合