Как добавить пользовательские поля в WordPress без плагинов

Пользовательские поля (custom fields) — это мощный способ расширить функционал стандартных записей WordPress, добавляя к ним уникальные данные. В этой статье разберем, как добавить и сохранить пользовательские поля без использования плагинов, используя только собственный код и стандартные хуки WordPress. Такой подход позволяет держать сайт легким и не зависеть от сторонних расширений.

Что такое пользовательские поля и зачем они нужны

Пользовательские поля — это дополнительная метаинформация для записей, страниц или кастомных типов постов. Они хранятся в таблице wp_postmeta и позволяют сохранять любые данные: от простого текста до сложных структур. Например, можно добавить цену товара, дату события, дополнительный текстовый блок и многое другое.

Использование пользовательских полей упрощает создание уникального контента и позволяет реализовать кастомный функционал без изменения ядра WordPress.

Создание пользовательских полей через функции темы (без плагинов)

Для добавления пользовательских полей нам нужно сделать три шага:

  • Добавить метабокс на страницу редактирования записи
  • Сохранить введенные данные
  • Вывести пользовательские поля на сайте

Добавление метабокса на экран редактирования записи

Метабокс — это блок в админке WordPress, где пользователь вводит данные. Используем хук add_meta_boxes и функцию add_meta_box.

function wparticles_add_custom_meta_box() {
    add_meta_box(
        'wparticles_custom_fields', // ID метабокса
        'Дополнительные поля',      // Заголовок
        'wparticles_render_meta_box', // Функция вывода
        'post',                    // Тип записи (можно 'page' или свой)
        'normal',                  // Контекст
        'default'                  // Приоритет
    );
}
add_action('add_meta_boxes', 'wparticles_add_custom_meta_box');

function wparticles_render_meta_box($post) {
    // Безопасность: nonce для проверки
    wp_nonce_field('wparticles_save_meta_box', 'wparticles_meta_box_nonce');

    // Получаем текущее значение, если оно есть
    $value = get_post_meta($post->ID, '_wparticles_custom_text', true);

    echo '<label for="wparticles_custom_text">Текстовое поле:</label>';
    echo '<input type="text" id="wparticles_custom_text" name="wparticles_custom_text" value="' . esc_attr($value) . '" size="25" />';
}

Этот код добавит метабокс с текстовым полем на экран редактирования записи.

Сохранение пользовательских данных

Чтобы сохранить введённое значение, нужно использовать хук save_post. Обязательно проверяем nonce и права пользователя.

function wparticles_save_meta_box_data($post_id) {
    // Проверяем nonce
    if (!isset($_POST['wparticles_meta_box_nonce']) || !wp_verify_nonce($_POST['wparticles_meta_box_nonce'], 'wparticles_save_meta_box')) {
        return;
    }

    // Проверяем права
    if (!current_user_can('edit_post', $post_id)) {
        return;
    }

    // Проверяем, что поле есть в запросе
    if (!isset($_POST['wparticles_custom_text'])) {
        return;
    }

    $data = sanitize_text_field($_POST['wparticles_custom_text']);

    // Сохраняем или обновляем мета-данные
    update_post_meta($post_id, '_wparticles_custom_text', $data);
}
add_action('save_post', 'wparticles_save_meta_box_data');

Вывод пользовательских полей на сайте

Чтобы отобразить пользовательские данные в шаблоне, используйте функцию get_post_meta. Например, в файле single.php или в любом шаблонном файле темы:

$custom_text = get_post_meta(get_the_ID(), '_wparticles_custom_text', true);
if (!empty($custom_text)) {
    echo '<div class="wparticles-custom-field">' . esc_html($custom_text) . '</div>';
}

Так вы можете выводить любые пользовательские мета-данные, добавленные через свой метабокс.

Расширение: добавление нескольких пользовательских полей

Чтобы добавить несколько полей, просто расширьте форму в функции wparticles_render_meta_box и сохранение в wparticles_save_meta_box_data. Например, добавим поле выбора даты и чекбокс:

function wparticles_render_meta_box($post) {
    wp_nonce_field('wparticles_save_meta_box', 'wparticles_meta_box_nonce');

    $text = get_post_meta($post->ID, '_wparticles_custom_text', true);
    $date = get_post_meta($post->ID, '_wparticles_custom_date', true);
    $checkbox = get_post_meta($post->ID, '_wparticles_custom_checkbox', true);

    echo '<p><label for="wparticles_custom_text">Текст:</label><br>';
    echo '<input type="text" id="wparticles_custom_text" name="wparticles_custom_text" value="' . esc_attr($text) . '" size="25" /></p>';

    echo '<p><label for="wparticles_custom_date">Дата:</label><br>';
    echo '<input type="date" id="wparticles_custom_date" name="wparticles_custom_date" value="' . esc_attr($date) . '" /></p>';

    echo '<p><label><input type="checkbox" name="wparticles_custom_checkbox" value="1" ' . checked($checkbox, '1', false) . ' /> Активировать</label></p>';
}

function wparticles_save_meta_box_data($post_id) {
    if (!isset($_POST['wparticles_meta_box_nonce']) || !wp_verify_nonce($_POST['wparticles_meta_box_nonce'], 'wparticles_save_meta_box')) {
        return;
    }

    if (!current_user_can('edit_post', $post_id)) {
        return;
    }

    if (isset($_POST['wparticles_custom_text'])) {
        update_post_meta($post_id, '_wparticles_custom_text', sanitize_text_field($_POST['wparticles_custom_text']));
    }

    if (isset($_POST['wparticles_custom_date'])) {
        update_post_meta($post_id, '_wparticles_custom_date', sanitize_text_field($_POST['wparticles_custom_date']));
    }

    $checkbox_value = isset($_POST['wparticles_custom_checkbox']) ? '1' : '0';
    update_post_meta($post_id, '_wparticles_custom_checkbox', $checkbox_value);
}

Теперь на странице записи будет три поля, которые сохраняются и могут быть выведены в шаблоне.

Примеры полезных плагинов для работы с пользовательскими полями

Хотя в статье мы говорим о решении без плагинов, иногда удобно использовать готовые инструменты, например:

  • Clearfy Pro — плагин для оптимизации и управления мета-данными.
  • Expert Review — расширяет возможности пользовательских полей для отзывов и оценок.

Если вы хотите гибко управлять пользовательскими полями с графическим интерфейсом, эти плагины значительно упростят задачу.

Советы по безопасности и оптимизации

При работе с пользовательскими полями обязательно делайте проверку nonce, прав пользователя и санитайзинг данных. Это защитит сайт от XSS и CSRF атак.

Для оптимизации быстродействия не храните большие объемы данных в мета-полях и избегайте избыточных запросов к базе, кешируя часто используемые значения.

Как отменить заказ в WooCommerce после оплаты с помощью хуков
07.05.2026
Как использовать хук pre_get_posts для фильтрации запросов в WordPress
06.02.2026
Как сделать отладку REST API WordPress с примером кода
16.12.2025
Как удалить загрузку WOFF шрифтов в WordPress для ускорения сайта
18.03.2026
Как избежать проблем с совместимостью AJAX в WooCommerce при кастомизации товаров
24.05.2026

Ниже мы подобрали самые актуальные материалы по Вордпресс