Пользовательские поля в WordPress нужны, когда стандартных заголовка и текста записи уже мало. Через них удобно хранить дату события, цену, автора, ссылку, номер телефона, краткую заметку, координаты, дополнительный статус — любую информацию, которую потом нужно показать на сайте рядом с записью, страницей или товаром.
Самый практичный сценарий выглядит так: вы добавляете поле в админке, сохраняете значение, а затем выводите его в шаблоне темы или через плагин, если не хотите править код. Ниже разберём оба подхода и покажу, как сделать это без лишних рисков.
Что такое пользовательские поля и когда они действительно нужны
В WordPress пользовательское поле — это пара «ключ-значение», которая прикрепляется к записи, странице или другому типу контента. Ключ — это имя поля, например price или event_date. Значение — конкретные данные, которые вы вводите для каждой записи.
Такой способ хранения подходит, если информация:
- повторяется от записи к записи;
- должна выводиться в одном и том же месте шаблона;
- не является частью основного текста статьи;
- может отличаться для каждой записи.
Например, для карточки мероприятия логично хранить дату, место и стоимость отдельно от описания. Для страницы услуги — цену, срок выполнения и ссылку на форму заявки. Для товара — характеристики, если они не покрываются стандартными полями темы или плагина.
Как добавить пользовательское поле в WordPress вручную
Если вам нужно быстро проверить механику или добавить одно-два поля без установки дополнительных плагинов, можно использовать встроенную возможность WordPress. В новых версиях редактора блоков панель пользовательских полей может быть скрыта, поэтому сначала её нужно включить.
Включите поддержку пользовательских полей в редакторе
Откройте нужную запись или страницу в редакторе. В меню с тремя точками в правом верхнем углу найдите раздел настроек и включите отображение пользовательских полей, если оно доступно в вашей версии WordPress. После этого внизу редактора появится блок для добавления нового поля.
Если вы не видите этот пункт, не спешите считать, что функция исчезла. В некоторых конфигурациях удобнее использовать плагин для управления полями, особенно если нужно не одно значение, а полноценный набор данных.
Добавьте ключ и значение
В блоке пользовательских полей укажите имя поля и значение. Например:
event_date—2026-11-15;price—3500;location—Москва, ул. Примерная, 10.
После сохранения записи WordPress сохранит эти данные вместе с постом. Важно использовать понятные и стабильные имена ключей: потом их проще вывести в шаблоне и не перепутать между разными типами контента.
Как вывести значение пользовательского поля в шаблоне
Если вы редактируете тему или дочернюю тему, пользовательское поле можно вывести прямо в шаблоне через функцию get_post_meta(). Это самый надёжный способ, когда нужно показать данные в конкретном месте: под заголовком, в карточке записи, в сайдбаре или в блоке с дополнительной информацией.
Перед изменением шаблона сделайте резервную копию файла, с которым работаете, или правьте код в дочерней теме. Иначе обновление темы может затереть ваши изменения.
Пример: выводим поле price в шаблоне записи.
<?php
$price = get_post_meta( get_the_ID(), 'price', true );
if ( $price !== '' ) {
echo '<p class="post-price">Цена: ' . esc_html( $price ) . '</p>';
}
?>Здесь get_post_meta() получает значение по ключу price для текущей записи. Параметр true означает, что функция вернёт одно значение, а не массив. Функция esc_html() нужна, чтобы безопасно вывести текст на страницу.
Если значение должно быть ссылкой, используйте экранирование для URL:
<?php
$link = get_post_meta( get_the_ID(), 'booking_link', true );
if ( $link ) {
echo '<a href="' . esc_url( $link ) . '">Записаться</a>';
}
?>Такой вариант подходит для кнопки заявки, ссылки на PDF, страницы оплаты или внешнего ресурса.
Как не сломать шаблон при выводе
Самая частая ошибка — выводить значение без проверки. Если поле пустое, на странице появится пустой блок или лишняя разметка. Поэтому всегда проверяйте, есть ли значение, прежде чем печатать HTML.
Ещё один момент: не выводите сырые данные без экранирования. Для текста используйте esc_html(), для ссылок — esc_url(). Если поле содержит HTML и вы сознательно хотите его разрешить, нужно отдельно продумать фильтрацию, иначе можно получить уязвимость.
Как сделать пользовательские поля удобными для редактора
Встроенный интерфейс WordPress подходит для простых задач, но для регулярной работы он быстро становится неудобным. Если вам нужно несколько полей, повторяющиеся группы данных, выбор из списка или аккуратная форма в админке, лучше использовать плагин для кастомных полей.
На практике это даёт три плюса:
- редактор видит понятные подписи, а не технические ключи;
- можно задать тип поля: текст, число, дата, ссылка, изображение;
- проще исключить ошибки при заполнении.
Для такой задачи обычно используют плагины класса Advanced Custom Fields или аналогичные решения. Схема работы у них одинаковая: создаёте группу полей, привязываете её к типу записи, заполняете значения в админке и выводите их в шаблоне через функции плагина или через стандартные метаполя WordPress, если плагин сохраняет данные в post meta.
Когда плагин лучше ручного способа
Плагин стоит выбрать, если:
- полей несколько и они повторяются на многих страницах;
- нужна валидация или выбор из заранее заданных вариантов;
- контентом занимается редактор, а не разработчик;
- вы хотите избежать ручного редактирования шаблонов для каждого нового поля.
Если же поле одно и вывод нужен в одном месте, проще обойтись без лишнего плагина и добавить метаданные вручную.
Практический пример: дата, цена и кнопка заявки для страницы услуги
Допустим, у вас есть страница услуги, и вы хотите хранить три дополнительных значения: дату старта, стоимость и ссылку на форму заявки. Логика будет такой:
- создаёте пользовательские поля
service_date,service_priceиservice_form; - заполняете их в админке для каждой услуги;
- добавляете вывод в шаблон страницы или в шаблон отдельного блока;
- проверяете, что пустые поля не показываются.
Пример вывода всех трёх значений:
<?php
$date = get_post_meta( get_the_ID(), 'service_date', true );
$price = get_post_meta( get_the_ID(), 'service_price', true );
$form = get_post_meta( get_the_ID(), 'service_form', true );
if ( $date ) {
echo '<p><strong>Дата:</strong> ' . esc_html( $date ) . '</p>';
}
if ( $price ) {
echo '<p><strong>Цена:</strong> ' . esc_html( $price ) . '</p>';
}
if ( $form ) {
echo '<p><a class="button" href="' . esc_url( $form ) . '">Оставить заявку</a></p>';
}
?>Такой код можно поставить в шаблон одиночной записи, в файл шаблона страницы или в часть темы, которая отвечает за вывод карточки. Если вы работаете с блоковой темой, логику можно перенести в шаблонный файл темы или в пользовательский блок, если он уже используется на сайте.
Как проверить, что всё работает правильно
После добавления полей и кода откройте страницу на сайте и проверьте три вещи:
- значение действительно сохраняется в админке после обновления записи;
- на фронтенде выводится именно то поле, которое вы ожидали;
- при пустом значении блок не ломает верстку и не оставляет лишних пустых строк.
Если значение не появляется, сначала проверьте ключ поля. Ошибка в одном символе — самая частая причина, почему get_post_meta() возвращает пустую строку. Затем убедитесь, что код выполняется в контексте нужной записи: в цикле WordPress это обычно работает автоматически, а вне цикла может понадобиться явно передать ID записи.
Если вы используете плагин для полей, проверьте ещё и привязку группы полей к нужному типу записи. Бывает, что поле создано правильно, но не отображается в редакторе, потому что условие показа настроено на другой тип контента.
Что выбрать: встроенные поля или плагин
| Сценарий | Что выбрать | Почему |
|---|---|---|
| Одно-два простых значения | Встроенные пользовательские поля | Быстро, без лишних зависимостей |
| Много полей и регулярное заполнение редактором | Плагин для кастомных полей | Удобнее интерфейс и меньше ошибок |
| Нужен точечный вывод в шаблоне | Шаблон + get_post_meta() | Полный контроль над разметкой |
| Нужно быстро без кода | Плагин с готовыми полями и выводом | Подходит, если не хотите править тему |
Если задача сводится к хранению дополнительной информации о записях, страницах или товарах, пользовательские поля — нормальный и проверенный инструмент. Для простых случаев достаточно встроенного механизма WordPress. Когда структура данных усложняется, лучше сразу перейти на плагин и не превращать админку в набор неудобных ручных полей.