2026年11月12日

2026年11月12日

WordPress 中繼框(Meta Box)不顯示的解決方法

本文是日文原文的在地化版本。 閱讀日文原文

前言

用外掛新增的中繼框(Meta Box)沒有出現在文章編輯畫面、之前看得到的中繼框突然消失、切換到區塊編輯器之後側邊欄的中繼框不見了。中繼框不顯示,與畫面設定以及和區塊編輯器的相容性有關。

症狀・原因

中繼框不顯示的主要原因:

  • 在畫面選項中被隱藏:每位使用者各自的顯示設定被設為「隱藏」
  • 與區塊編輯器不相容:需要設定__block_editor_compatible_meta_box
  • 掛鉤優先順序的問題:add_meta_boxes掛鉤的時機不對
  • 文章類型指定錯誤:第 3 個參數的文章類型寫錯了
  • 外掛衝突:其他外掛移除了該中繼框

解決步驟

步驟 1:確認畫面選項

最常見的原因是在畫面選項中被隱藏。

1. 點選文章編輯畫面右上角的「畫面選項」(Screen Options)

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:重設使用者中繼資料

畫面選項的設定是儲存在使用者中繼資料(user meta)中。

// 重設特定使用者的中繼框顯示設定
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。如果還是無法解決,就要逐一排查外掛衝突。相關文章:自訂欄位無法儲存時、區塊編輯器當機時

對 WordPress 有疑問嗎?本站營運方位於日本,僅以日文回覆。 聯絡我們(日文)

お気軽にご相談ください

お見積りへ お問い合わせへ
▲