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

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

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

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

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

Пример использования: у вас блог о книгах, и вы хотите добавить к каждой записи автора книги и цену. Для этого достаточно создать собственные поля author и price.

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

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

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

Создание метабокса с полями: пример кода для wptests.ru

Добавим в functions.php темы следующий код, который создаст метабокс с двумя полями: «Автор книги» и «Цена».

function wptests_add_custom_meta_box() {
    add_meta_box(
        'wptests_book_info',
        'Информация о книге',
        'wptests_render_meta_box',
        'post',
        'normal',
        'high'
    );
}
add_action('add_meta_boxes', 'wptests_add_custom_meta_box');

function wptests_render_meta_box($post) {
    // Получаем сохраненные значения
    $author = get_post_meta($post->ID, '_wptests_book_author', true);
    $price = get_post_meta($post->ID, '_wptests_book_price', true);

    // Безопасность
    wp_nonce_field('wptests_save_meta_box', 'wptests_meta_box_nonce');

    echo '<p><label for="wptests_book_author">Автор книги:</label><br />';
    echo '<input type="text" id="wptests_book_author" name="wptests_book_author" value="'.esc_attr($author).'" size="30" /></p>';

    echo '<p><label for="wptests_book_price">Цена (в рублях):</label><br />';
    echo '<input type="number" id="wptests_book_price" name="wptests_book_price" value="'.esc_attr($price).'" size="10" /></p>';
}

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

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

    // Сохраняем данные
    if (isset($_POST['wptests_book_author'])) {
        update_post_meta($post_id, '_wptests_book_author', sanitize_text_field($_POST['wptests_book_author']));
    }
    if (isset($_POST['wptests_book_price'])) {
        update_post_meta($post_id, '_wptests_book_price', intval($_POST['wptests_book_price']));
    }
}
add_action('save_post', 'wptests_save_meta_box');

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

Вывод собственных полей в шаблоне темы

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

function wptests_display_book_info($content) {
    if (is_singular('post')) {
        global $post;
        $author = get_post_meta($post->ID, '_wptests_book_author', true);
        $price = get_post_meta($post->ID, '_wptests_book_price', true);

        if ($author || $price) {
            $info = '<div class="book-info">';
            if ($author) {
                $info .= '<p><strong>Автор:</strong> ' . esc_html($author) . '</p>';
            }
            if ($price) {
                $info .= '<p><strong>Цена:</strong> ' . esc_html($price) . ' руб.</p>';
            }
            $info .= '</div>';

            return $content . $info;
        }
    }
    return $content;
}
add_filter('the_content', 'wptests_display_book_info');

Такой подход гибкий и не требует установки дополнительных плагинов.

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

Преимущества:

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

Недостатки:

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

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

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

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

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

Итоги и рекомендации по добавлению собственных полей в WordPress

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

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

Как использовать post status в WordPress для управления содержанием
05.01.2026
Как использовать WPRemark для автоматизации отзывов в WordPress
15.03.2026
Как использовать nonces в WordPress для защиты от CSRF атак
02.04.2026
Как создать подписку на email в WordPress с AJAX без плагинов
25.03.2026
Как установить лимит для загрузки файлов в WordPress
19.03.2026