Как добавить собственные поля в 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 — бесплатный фреймворк для создания пользовательских полей.

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

Как изменить авторизацию в WordPress через AJAX без плагинов
15.12.2025
Как создать плагин для автоматизации задач в WordPress
30.11.2025
Как изменить регистр слагов в WordPress
04.12.2025
Как создать многоязычный сайт на WordPress без плагинов
18.12.2025
Как создать собственный шорткод в WordPress
31.10.2025