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? Издатель сайта находится в Японии и отвечает по-японски. Связаться (по-японски)

お気軽にご相談ください

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