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

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

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

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

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

Регистрация мета-бокса для ввода данных

Первый шаг — создать мета-бокс, который появится на странице редактирования записи. Для этого используем хук add_meta_boxes и функцию add_meta_box. В wp7.ru мы будем использовать префикс wp7_ для своих функций, чтобы избежать конфликтов.

function wp7_add_custom_meta_box() {
    add_meta_box(
        'wp7_custom_fields',
        'Дополнительные поля',
        'wp7_custom_meta_box_callback',
        'post',
        'normal',
        'high'
    );
}
add_action('add_meta_boxes', 'wp7_add_custom_meta_box');

Здесь мы добавляем мета-бокс с ID wp7_custom_fields, заголовком «Дополнительные поля», для типа записи post. При необходимости можно заменить post на page или создать для custom post type.

Создание HTML формы мета-бокса

Теперь нужно написать функцию-обработчик, которая выведет поля ввода внутри мета-бокса:

function wp7_custom_meta_box_callback($post) {
    // Добавляем nonce для проверки безопасности
    wp_nonce_field('wp7_save_meta_box_data', 'wp7_meta_box_nonce');

    $value = get_post_meta($post->ID, '_wp7_custom_field', true);

    echo '<label for="wp7_custom_field">Введите дополнительную информацию:</label> ';
    echo '<input type="text" id="wp7_custom_field" name="wp7_custom_field" value="' . esc_attr($value) . '" size="25" />';
}

Здесь мы выводим текстовое поле. Значение поля подгружается из мета-данных записи, если оно есть.

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

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

function wp7_save_meta_box_data($post_id) {
    // Проверка nonce
    if (!isset($_POST['wp7_meta_box_nonce']) || !wp_verify_nonce($_POST['wp7_meta_box_nonce'], 'wp7_save_meta_box_data')) {
        return;
    }

    // Проверка автосохранения
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }

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

    if (!isset($_POST['wp7_custom_field'])) {
        return;
    }

    $my_data = sanitize_text_field($_POST['wp7_custom_field']);

    update_post_meta($post_id, '_wp7_custom_field', $my_data);
}
add_action('save_post', 'wp7_save_meta_box_data');

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

Вывод собственных полей на фронтенде

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

$custom_field_value = get_post_meta(get_the_ID(), '_wp7_custom_field', true);
if (!empty($custom_field_value)) {
    echo '<div class="wp7-custom-field">Дополнительная информация: ' . esc_html($custom_field_value) . '</div>';
}

Вывод можно стилизовать через CSS по классу wp7-custom-field. Если нужно использовать в другом месте — можно оформить в виде шорткода или функции.

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

Чтобы упростить использование, добавим шорткод, который будет выводить наше поле в любом месте контента.

function wp7_custom_field_shortcode($atts) {
    global $post;
    $value = get_post_meta($post->ID, '_wp7_custom_field', true);
    if (!empty($value)) {
        return '<span class="wp7-custom-field-shortcode">' . esc_html($value) . '</span>';
    }
    return '';
}
add_shortcode('wp7_custom_field', 'wp7_custom_field_shortcode');

Теперь в редакторе можно вставить [wp7_custom_field] и вывести нужное значение.

Советы и лучшие практики при работе с собственными полями

Используйте префиксы для ключей мета-данных

Чтобы избежать конфликтов с другими плагинами и темами, всегда используйте уникальные префиксы для ключей, например _wp7_ в нашем случае.

Обрабатывайте и проверяйте данные

Никогда не сохраняйте данные без проверки и очистки. Используйте функции WordPress для безопасности: sanitize_text_field(), esc_html() и nonce для защиты от CSRF.

Не перегружайте интерфейс

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

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

Если вы предпочитаете не писать код, есть популярные плагины, которые помогают создавать и управлять собственными полями:

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

Но, если вы хотите легковесное решение и полный контроль — ручное добавление полей через код, как описано выше, — лучший выбор.

Как удалить корзину WooCommerce из меню без плагинов
25.04.2026
Как удалить корзину WooCommerce из меню без плагинов
29.04.2026
Как удалить или заблокировать плагин WordPress правильно
08.11.2025
Как использовать WP7 для автоматизации обновлений в WordPress
30.01.2026
Как создать автоматические бэкапы в WordPress с помощью плагинов
10.02.2026