2026年11月12日

2026年11月12日

Meta box không hiển thị trong WordPress: nguyên nhân và cách khắc phục

Đây là phiên bản được bản địa hóa từ bài viết gốc tiếng Nhật. Đọc bài gốc tiếng Nhật

Giới thiệu

Meta box thêm bằng plugin không hiện trong màn hình soạn bài, meta box trước đây vẫn thấy bỗng nhiên biến mất, hoặc sau khi chuyển sang block editor thì meta box ở thanh bên không còn xuất hiện. Việc meta box bị ẩn liên quan đến thiết lập hiển thị màn hình và khả năng tương thích với block editor.

Triệu chứng và nguyên nhân

Các nguyên nhân chính khiến meta box không hiển thị:

  • Bị ẩn trong Tùy chọn hiển thị: thiết lập hiển thị theo từng người dùng đang ở trạng thái "ẩn"
  • Không tương thích với block editor: cần thiết lập __block_editor_compatible_meta_box
  • Vấn đề về độ ưu tiên của hook: thời điểm của hook add_meta_boxes không khớp
  • Chỉ định sai loại nội dung: loại nội dung ở tham số thứ 3 bị sai
  • Xung đột plugin: một plugin khác đã xóa meta box

Các bước khắc phục

Bước 1: Kiểm tra Tùy chọn hiển thị

Nguyên nhân thường gặp nhất là thiết lập ẩn trong Tùy chọn hiển thị.

1. Nhấp "Tùy chọn hiển thị" (Screen Options) ở góc trên bên phải của màn hình soạn bài

2. Kiểm tra xem ô của meta box bạn muốn hiển thị có bị bỏ chọn không

3. Đánh dấu chọn rồi đóng lại là meta box sẽ hiển thị

Bước 2: Kiểm tra cách triển khai add_meta_box

// functions.php — thêm meta box đúng cách
add_action('add_meta_boxes', function() {
    add_meta_box(
        'my_meta_box_id',       // ID (chuỗi duy nhất)
        'Thông tin tùy chỉnh',           // Tiêu đề
        'render_my_meta_box',   // Hàm callback
        ['post', 'page'],       // Loại nội dung (có thể chỉ định nhiều loại bằng mảng)
        'normal',               // Ngữ cảnh: normal/side/advanced
        'high'                  // Độ ưu tiên: 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) . '">';
}

Bước 3: Hiển thị meta box trong block editor

Block editor (Gutenberg) chỉ hỗ trợ meta box ở mức hạn chế.

// Hiển thị meta box cả trong block editor
add_action('add_meta_boxes', function() {
    add_meta_box(
        'my_meta_box_id',
        'Thông tin tùy chỉnh',
        'render_my_meta_box',
        'post',
        'normal',
        'high',
        // Khai báo rõ là tương thích với block editor
        ['__block_editor_compatible_meta_box' => true]
    );
});

Bước 4: Tắt block editor để kiểm tra

// functions.php — tắt block editor cho một loại nội dung cụ thể
add_filter('use_block_editor_for_post_type', function($use_block_editor, $post_type) {
    if ($post_type === 'post') {
        return false;  // Chuyển sang Classic Editor
    }
    return $use_block_editor;
}, 10, 2);

Hoặc bạn cũng có thể cài plugin "Classic Editor" và thiết lập từ trang quản trị.

Bước 5: Gỡ lỗi việc hiển thị meta box

// Kiểm tra meta box đã được đăng ký chưa
add_action('add_meta_boxes', function() {
    global $wp_meta_boxes;
    error_log('Meta boxes: ' . print_r(array_keys($wp_meta_boxes), true));
}, 999);  // Chạy sau cùng với độ ưu tiên 999

Bước 6: Kiểm tra xung đột plugin

# Dùng WP-CLI để tắt toàn bộ plugin rồi kiểm tra meta box
wp plugin deactivate --all
# Mở màn hình soạn bài trong trình duyệt và kiểm tra meta box có hiện không
# Nếu ổn, bật từng plugin một để xác định thủ phạm
wp plugin activate plugin-name

Bước 7: Đặt lại user meta

Thiết lập của Tùy chọn hiển thị được lưu trong user meta.

// Đặt lại thiết lập hiển thị meta box của một người dùng cụ thể
delete_user_meta(get_current_user_id(), 'metaboxhidden_post');
delete_user_meta(get_current_user_id(), 'metaboxhidden_page');

Lưu ý

  • Thiết lập của Tùy chọn hiển thị được lưu theo từng người dùng. Những người dùng khác cần thiết lập riêng.
  • Trong block editor, chỉ các meta box ở ngữ cảnh side mới hiển thị ở thanh bên.
  • Khi dùng ACF (Advanced Custom Fields), cần thiết lập nhóm trường tương thích với block editor.

Tổng kết

Khi meta box không hiển thị, trước hết hãy kiểm tra các ô chọn trong "Tùy chọn hiển thị". Với block editor, cần thiết lập __block_editor_compatible_meta_box. Nếu vẫn chưa giải quyết được, hãy khoanh vùng xung đột plugin. Bài viết liên quan: Khi custom field không lưu được, Khi block editor bị crash

Có câu hỏi về WordPress? Đơn vị xuất bản trang này ở Nhật Bản và trả lời bằng tiếng Nhật. Liên hệ (tiếng Nhật)

お気軽にご相談ください

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