Как использовать Meta Box для создания настроек в WordPress

Meta box — это мощный инструмент в WordPress, который позволяет добавить в админку дополнительные панели с настройками для постов, страниц, пользовательских типов записей и даже для глобальных настроек сайта. В этой статье мы подробно разберём, как создавать и настраивать meta box, чтобы расширить функциональность вашего сайта на WordPress.

Что такое Meta Box в WordPress и где он применяется

Meta Box — это отдельный блок на странице редактирования записи (поста, страницы, CPT), который содержит дополнительные поля для ввода данных. Они могут быть текстовыми, числовыми, выпадающими списками, чекбоксами и так далее. С помощью meta box можно сохранять в базу уникальные данные, которые не входят в стандартные поля записи.

Meta box широко используется для:

  • Добавления дополнительных параметров к записям (например, рейтинг, авторские данные, дата события).
  • Создания отдельных настроек для пользовательских типов записей.
  • Реализации панелей настроек в админке для темы или плагина.

Для создания meta box можно использовать собственный код или специальные плагины. Рассмотрим оба варианта.

Создание Meta Box вручную: пример кода для wpmax_add_metabox

Добавим простой meta box с текстовым полем к постам, чтобы сохранить дополнительную информацию, например, «Дополнительный заголовок».

function wpmax_add_metabox() {
    add_meta_box(
        'wpmax_extra_title', // ID метабокса
        'Дополнительный заголовок', // Заголовок
        'wpmax_render_metabox', // Callback для вывода
        'post', // Тип записи
        'normal', // Контекст
        'high' // Приоритет
    );
}
add_action('add_meta_boxes', 'wpmax_add_metabox');

function wpmax_render_metabox($post) {
    // Безопасность: nonce
    wp_nonce_field('wpmax_save_metabox_nonce', 'wpmax_metabox_nonce');

    $value = get_post_meta($post->ID, '_wpmax_extra_title', true);
    echo '<label for="wpmax_extra_title">Введите дополнительный заголовок:</label>';
    echo '<input type="text" id="wpmax_extra_title" name="wpmax_extra_title" value="' . esc_attr($value) . '" size="25" />';
}

function wpmax_save_metabox($post_id) {
    // Проверка nonce
    if (!isset($_POST['wpmax_metabox_nonce']) || !wp_verify_nonce($_POST['wpmax_metabox_nonce'], 'wpmax_save_metabox_nonce')) {
        return;
    }
    // Проверка прав
    if (!current_user_can('edit_post', $post_id)) {
        return;
    }
    // Проверка автосохранения
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }

    if (isset($_POST['wpmax_extra_title'])) {
        update_post_meta($post_id, '_wpmax_extra_title', sanitize_text_field($_POST['wpmax_extra_title']));
    }
}
add_action('save_post', 'wpmax_save_metabox');

Этот код добавит на страницу редактирования поста новый блок с полем ввода. Данные сохраняются в метаполе _wpmax_extra_title. При выводе на сайте вы сможете получить значение через get_post_meta($post->ID, '_wpmax_extra_title', true).

Использование плагина Meta Box для более сложных настроек

Если вы хотите создать meta box без написания большого объёма кода, рекомендую использовать плагин Meta Box. Это один из самых популярных и гибких инструментов для работы с кастомными полями и мета-боксами в WordPress.

Преимущества плагина:

  • Поддержка множества типов полей (текст, textarea, изображения, галереи, даты, селекты, чекбоксы).
  • Гибкая регистрация мета-боксов через PHP или UI.
  • Встроенные функции для валидации и сохранения данных.
  • Расширения для создания опций темы, пользовательских форм и пр.

Пример регистрации meta box с помощью плагина:

add_filter('rwmb_meta_boxes', 'wpmax_register_meta_boxes');
function wpmax_register_meta_boxes($meta_boxes) {
    $meta_boxes[] = [
        'title'      => 'Дополнительные настройки',
        'post_types' => ['post'],
        'fields'     => [
            [
                'id'   => 'wpmax_subtitle',
                'name' => 'Подзаголовок',
                'type' => 'text',
            ],
            [
                'id'   => 'wpmax_featured',
                'name' => 'Выделить запись',
                'type' => 'checkbox',
            ],
        ],
    ];
    return $meta_boxes;
}

Такой код добавит два поля — текстовое и чекбокс — на страницу редактирования поста. Выводятся они автоматически, а данные доступны через API плагина.

Советы по работе с Meta Box и интеграция с плагинами от WPSHOP

При создании meta box важно учитывать удобство пользователя и безопасность. Вот несколько рекомендаций:

  • Используйте nonce для защиты от CSRF-атак.
  • Валидация и санитизация данных при сохранении обязательна.
  • Для сложных настроек применяйте проверенные плагины, например, Meta Box, который легко интегрируется с плагинами WPGPT и Expert Review.
  • Для создания панелей настроек темы можно использовать meta box с типом опций, что позволит удобно управлять параметрами из админки.

Если вы используете тему Reboot или Root, meta box можно применять для расширения стандартных возможностей без правки исходников темы.

Вывод данных из Meta Box на фронтенде WordPress

Чтобы вывести сохранённые значения meta box на сайте, используйте функцию get_post_meta. Пример вывода дополнительного заголовка:

function wpmax_display_extra_title() {
    global $post;
    $extra_title = get_post_meta($post->ID, '_wpmax_extra_title', true);
    if (!empty($extra_title)) {
        echo '<h2 class="extra-title">' . esc_html($extra_title) . '</h2>';
    }
}
add_action('the_content', 'wpmax_display_extra_title');

Этот код добавит дополнительный заголовок в содержимое поста. Аналогично можно вывести любые другие сохранённые данные.

Заключение по работе с Meta Box в WordPress

Meta Box — это гибкий и мощный инструмент для расширения функционала WordPress. Ручное создание meta box даёт полный контроль, а использование плагинов упрощает задачу и сокращает время разработки. В зависимости от целей выбирайте подходящий способ, соблюдайте безопасность и удобство для пользователей.

Как установить и изменить PHP разрешения в WordPress без доступа к php.ini
09.02.2026
WooCommerce: как настроить правила разграничения доступа к страницам и категориям товаров
05.06.2026
WooCommerce: как корректно удалить вариации товаров при удалении родительского товара
16.06.2026
Как добавить дополнительные поля в формы регистрации WordPress
17.02.2026
Как создать автоматический импорт пользовательских регистраций в WordPress
16.04.2026