2026年11月12日

2026年11月12日

WordPress Meta Box 不显示的解决方法:显示选项、add_meta_box、区块编辑器

本文是日语原文的本地化版本。 阅读日语原文

前言

插件添加的 Meta Box(元框)没有出现在文章编辑页面,以前能看到的 Meta Box 突然消失了,切换到区块编辑器后侧边栏的 Meta Box 不见了。Meta Box 不显示,与显示选项设置以及和区块编辑器的兼容性有关。

症状与原因

Meta Box 不显示的主要原因:

  • 在显示选项中被隐藏:每个用户各自的显示设置被设为“隐藏”
  • 与区块编辑器不兼容:需要设置 __block_editor_compatible_meta_box
  • 钩子优先级问题:add_meta_boxes 钩子的执行时机不对
  • 文章类型指定错误:第 3 个参数中的文章类型有误
  • 插件冲突:其他插件删除了 Meta Box

解决步骤

步骤1:检查显示选项

最常见的原因是在显示选项中把它隐藏了。

1. 点击文章编辑页面右上角的“显示选项 (Screen Options)”

2. 确认想要显示的 Meta Box 是否被取消了勾选

3. 勾选后关闭,它就会显示出来

步骤2:检查 add_meta_box 的实现

// functions.php — 正确添加 Meta Box
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:在区块编辑器中显示 Meta Box

区块编辑器(Gutenberg)对 Meta Box 的支持有限。

// 让区块编辑器中也显示 Meta Box
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:调试 Meta Box 的显示

// 确认 Meta Box 是否已注册
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 停用所有插件,然后确认 Meta Box
wp plugin deactivate --all
# 在浏览器中打开文章编辑页面,确认 Meta Box 是否出现
# 如果没有问题,就逐个启用插件来定位原因
wp plugin activate plugin-name

步骤7:重置用户元数据

显示选项的设置保存在用户元数据(user meta)中。

// 重置特定用户的 Meta Box 显示设置
delete_user_meta(get_current_user_id(), 'metaboxhidden_post');
delete_user_meta(get_current_user_id(), 'metaboxhidden_page');

注意事项

  • 显示选项的设置是按用户分别保存的。其他用户需要各自单独设置。
  • 在区块编辑器中,只有 side 上下文的 Meta Box 才会显示在侧边栏中。
  • 使用 ACF(Advanced Custom Fields)时,需要进行支持区块编辑器的字段组设置。

总结

Meta Box 不显示时,请先检查“显示选项”中的勾选情况。在区块编辑器中,需要设置 __block_editor_compatible_meta_box。如果仍然无法解决,就逐一排查插件冲突。相关文章:自定义字段无法保存时的处理、区块编辑器崩溃时的处理

关于 WordPress 有疑问?本站运营方位于日本,仅以日语回复。 联系我们(日语)

お気軽にご相談ください

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