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

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

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

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

Например, для сайта с каталогом товаров можно добавить поле «Артикул» или «Производитель». Для блога — поле «Источник» или «Дата проведения мероприятия». Встроенные кастомные поля в WordPress есть, но их интерфейс неудобен, и без доработок трудно ограничить набор полей или сделать их удобными для заполнения.

Добавляем уникальные поля в админку WordPress вручную

Для начала создадим метабокс, в котором будем вводить наши уникальные поля. Для примера добавим к записи поле «Дополнительная информация».

Создание метабокса

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

function wp_course_add_custom_meta_box() {
    add_meta_box(
        'wp_course_custom_meta', // ID метабокса
        'Дополнительная информация', // Заголовок
        'wp_course_custom_meta_box_callback', // Функция вывода
        'post', // Тип записи (здесь - записи блога)
        'normal', // Контекст
        'high' // Приоритет
    );
}
add_action('add_meta_boxes', 'wp_course_add_custom_meta_box');

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

Вывод полей внутри метабокса

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

function wp_course_custom_meta_box_callback($post) {
    wp_nonce_field('wp_course_save_meta_box_data', 'wp_course_meta_box_nonce');
    $value = get_post_meta($post->ID, '_wp_course_custom_field', true);
    echo '<label for="wp_course_custom_field">Введите дополнительную информацию:</label>';
    echo '<input type="text" id="wp_course_custom_field" name="wp_course_custom_field" value="'.esc_attr($value).'" size="25" />';
}

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

Сохранение данных метаполя

Чтобы введённые данные сохранялись, добавим обработчик сохранения:

function wp_course_save_meta_box_data($post_id) {
    if (!isset($_POST['wp_course_meta_box_nonce'])) {
        return;
    }
    if (!wp_verify_nonce($_POST['wp_course_meta_box_nonce'], 'wp_course_save_meta_box_data')) {
        return;
    }
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }
    if (!current_user_can('edit_post', $post_id)) {
        return;
    }
    if (!isset($_POST['wp_course_custom_field'])) {
        return;
    }
    $my_data = sanitize_text_field($_POST['wp_course_custom_field']);
    update_post_meta($post_id, '_wp_course_custom_field', $my_data);
}
add_action('save_post', 'wp_course_save_meta_box_data');

Этот код проверяет права пользователя, nonce и корректно сохраняет данные в базу.

Вывод уникального поля на сайте

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

$custom_field = get_post_meta(get_the_ID(), '_wp_course_custom_field', true);
if (!empty($custom_field)) {
    echo '<div class="wp-course-custom-field">' . esc_html($custom_field) . '</div>';
}

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

Добавление нескольких уникальных полей с разными типами

Если нужно добавить набор уникальных полей с разными типами (текст, чекбокс, select), стоит расширить метабокс и обработчик сохранения. Рассмотрим пример с полем «Статус» (select) и галочкой «Показать на главной» (checkbox).

function wp_course_custom_meta_box_callback($post) {
    wp_nonce_field('wp_course_save_meta_box_data', 'wp_course_meta_box_nonce');

    $text_value = get_post_meta($post->ID, '_wp_course_text_field', true);
    $status_value = get_post_meta($post->ID, '_wp_course_status_field', true);
    $show_on_home = get_post_meta($post->ID, '_wp_course_show_on_home', true);

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

    echo '<p><label for="wp_course_status_field">Статус:</label><br/>';
    echo '<select id="wp_course_status_field" name="wp_course_status_field">';
    $options = array('draft' => 'Черновик', 'published' => 'Опубликовано', 'archived' => 'Архив');
    foreach ($options as $key => $label) {
        $selected = ($status_value === $key) ? 'selected' : '';
        echo "<option value=\"$key\" $selected>$label</option>";
    }
    echo '</select></p>';

    $checked = ($show_on_home === 'yes') ? 'checked' : '';
    echo '<p><input type="checkbox" id="wp_course_show_on_home" name="wp_course_show_on_home" value="yes" ' . $checked . ' />';
    echo '<label for="wp_course_show_on_home">Показывать на главной</label></p>';
}

Обновим функцию сохранения:

function wp_course_save_meta_box_data($post_id) {
    if (!isset($_POST['wp_course_meta_box_nonce'])) {
        return;
    }
    if (!wp_verify_nonce($_POST['wp_course_meta_box_nonce'], 'wp_course_save_meta_box_data')) {
        return;
    }
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }
    if (!current_user_can('edit_post', $post_id)) {
        return;
    }

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

    if (isset($_POST['wp_course_status_field'])) {
        $allowed = array('draft', 'published', 'archived');
        $status = sanitize_text_field($_POST['wp_course_status_field']);
        if (in_array($status, $allowed)) {
            update_post_meta($post_id, '_wp_course_status_field', $status);
        }
    }

    $show = isset($_POST['wp_course_show_on_home']) && $_POST['wp_course_show_on_home'] === 'yes' ? 'yes' : 'no';
    update_post_meta($post_id, '_wp_course_show_on_home', $show);
}
add_action('save_post', 'wp_course_save_meta_box_data');

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

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

  • Clearfy Pro — в том числе умеет управлять метаполями и оптимизировать сайт;
  • WPRemark — хороший плагин для работы с контентом и метаданными;
  • Advanced Custom Fields (ACF) — самый известный плагин для создания и управления уникальными полями.

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

Итоги и рекомендации

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

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

Если нужна автоматизация или визуальное управление — стоит обратить внимание на плагины из каталога WPSHOP.RU.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как разрешить использовать PHP в шорткодах WordPress: практическое руководство
06.12.2025
Как избежать проблемы с совместимостью плагинов в WordPress: практическое руководство
30.01.2026
Как удалить кэш в WordPress: практическое руководство
16.02.2026
Работа с хуками и фильтрами в WordPress — подробное руководство с примерами
25.11.2025
Как автоматизировать удаление спама в комментариях WordPress с помощью кода и плагинов
09.01.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее