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

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

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

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

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

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

Как добавить собственные поля в WordPress через метабоксы (meta boxes)

Для добавления своих полей удобно создавать метабоксы — отдельные блоки в административной панели редактирования записи. Это позволяет организовать ввод данных и настроить их в соответствии с задачами проекта.

Рассмотрим пример, как добавить метабокс с двумя полями: "Цена" и "Дата окончания акции" для обычной записи (post).

Регистрация метабокса

В файле functions.php вашей темы или в отдельном плагине добавьте следующий код:

function wpkit_add_custom_meta_box() {
    add_meta_box(
        'wpkit_meta_box_id',
        'Дополнительные параметры',
        'wpkit_meta_box_callback',
        'post',
        'normal',
        'high'
    );
}
add_action('add_meta_boxes', 'wpkit_add_custom_meta_box');

Эта функция добавляет метабокс с ID wpkit_meta_box_id, заголовком "Дополнительные параметры" на экран редактирования записи.

Отображение полей в метабоксе

Теперь определим функцию обратного вызова, которая выведет HTML поля для ввода:

function wpkit_meta_box_callback($post) {
    // Безопасность: nonce поле
    wp_nonce_field('wpkit_save_meta_box_data', 'wpkit_meta_box_nonce');

    $price = get_post_meta($post->ID, '_wpkit_price', true);
    $expiry_date = get_post_meta($post->ID, '_wpkit_expiry_date', true);

    echo '<label for="wpkit_price">Цена:</label> ';
    echo '<input type="number" id="wpkit_price" name="wpkit_price" value="' . esc_attr($price) . '" step="0.01"><br>';

    echo '<label for="wpkit_expiry_date">Дата окончания акции:</label> ';
    echo '<input type="date" id="wpkit_expiry_date" name="wpkit_expiry_date" value="' . esc_attr($expiry_date) . '">';
}

Таким образом, появятся два поля ввода с сохранёнными значениями, если они есть.

Сохранение данных собственных полей

Чтобы данные сохранялись при сохранении записи, нужно добавить обработчик:

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

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

    // Проверяем, что поля переданы
    if (isset($_POST['wpkit_price'])) {
        $price = sanitize_text_field($_POST['wpkit_price']);
        update_post_meta($post_id, '_wpkit_price', $price);
    }

    if (isset($_POST['wpkit_expiry_date'])) {
        $expiry_date = sanitize_text_field($_POST['wpkit_expiry_date']);
        update_post_meta($post_id, '_wpkit_expiry_date', $expiry_date);
    }
}
add_action('save_post', 'wpkit_save_meta_box_data');

Этот код гарантирует сохранение данных при обновлении записи и защиту от неавторизованных изменений.

Как вывести собственные поля на сайте в шаблоне WordPress

После сохранения данных нужно вывести их на сайте. Для этого в шаблоне темы (например, в single.php) используйте функцию get_post_meta:

$price = get_post_meta(get_the_ID(), '_wpkit_price', true);
$expiry_date = get_post_meta(get_the_ID(), '_wpkit_expiry_date', true);

if ($price) {
    echo '<p>Цена: ' . esc_html($price) . '</p>';
}
if ($expiry_date) {
    echo '<p>Акция действует до: ' . esc_html($expiry_date) . '</p>';
}

Это простой способ вывести дополнительную информацию рядом с основным содержимым записи.

Преимущества добавления собственных полей вручную без плагинов

Выбор способа добавления собственных полей зависит от задачи. Использование плагинов удобно, но не всегда оправдано:

  • Отсутствие лишних зависимостей и плагинов на сайте.
  • Полный контроль над кодом и структурой данных.
  • Возможность точного кастомизированного интерфейса без лишних функций.
  • Оптимизация скорости загрузки и безопасности.

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

Рекомендации по безопасности и оптимизации работы с метаполями

Работая с собственными полями, обязательно соблюдайте несколько правил безопасности:

  • Используйте wp_nonce_field и проверяйте nonce при сохранении данных.
  • Проверяйте права пользователя перед сохранением или изменением данных.
  • Санитизируйте и валидируйте все данные, полученные из формы.
  • Используйте префиксы в именах метаполей, чтобы избежать конфликтов с другими плагинами и темами.

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

Альтернативные плагины для работы с собственными полями

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

  • Advanced Custom Fields (ACF) — самый популярный плагин для создания метаполей с удобным интерфейсом.
  • Meta Box — гибкий и мощный инструмент с большим набором типов полей.
  • CMB2 — легковесный и простой для разработчиков плагин, который можно расширять под свои нужды.

Однако помните, что использование этих плагинов добавляет дополнительную нагрузку и требует поддержки.

Вывод

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

Как создать автоматическое сохранение данных в WordPress
03.12.2025
Как защитить WordPress от взломов: надежные методы и примеры
29.11.2025
Как создать собственный шорткод в WordPress: практические примеры и советы
18.11.2025
Решение проблемы: не работает корзина WooCommerce после обновления
25.04.2026
Как автоматически обновлять плагины WordPress без риска
30.03.2026