2026年11月12日

2026年11月12日

Не відображаються метабокси WordPress: причини та рішення

Ця стаття — локалізована версія японського оригіналу. Читати японський оригінал

Вступ

Метабокс, доданий плагіном, не з’являється на екрані редагування запису; метабокс, який раніше був видимий, раптом зник; після переходу на редактор блоків метабокси в бічній панелі більше не показуються. До зникнення метабоксів причетні налаштування екрана та сумісність із редактором блоків.

Симптоми та причини

Основні причини, через які метабокс не відображається:

  • Приховано в параметрах екрана: для користувача в налаштуваннях відображення вказано «приховати»
  • Несумісність із редактором блоків: потрібне налаштування __block_editor_compatible_meta_box
  • Проблема з пріоритетом хука: момент спрацювання хука add_meta_boxes не збігається
  • Помилка у вказівці типу запису: тип запису в третьому аргументі вказано неправильно
  • Конфлікт плагінів: інший плагін видаляє метабокс

Порядок розв’язання

Крок 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. Скиньте метадані користувача

Налаштування параметрів екрана зберігаються в метаданих користувача.

// Скинути налаштування відображення метабоксів для конкретного користувача
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? Видавець сайту перебуває в Японії й відповідає японською. Написати нам (японською)

お気軽にご相談ください

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