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