Собственные поля (custom fields) — мощный инструмент WordPress, который позволяет расширять стандартный функционал постов и страниц, добавляя к ним дополнительные данные. Многие начинающие разработчики тянутся к плагинам для реализации этой задачи, но на самом деле добавить и вывести собственные поля можно и вручную, через код. Это снижает нагрузку на сайт и даёт полный контроль над выводом данных.
Что такое собственные поля в WordPress и зачем они нужны
Собственные поля — это мета-данные, которые можно прикрепить к записи или странице. Например, если вы создаёте сайт с каталогом товаров, в качестве собственных полей можно хранить цену, артикул, размеры и прочую информацию, не входящую в стандартный набор полей WordPress.
Использование собственных полей позволяет:
- Хранить дополнительную информацию, не меняя структуру базы данных.
- Создавать гибкие шаблоны вывода контента.
- Оптимизировать работу сайта, избегая установки лишних плагинов.
В WordPress собственные поля хранятся в таблице wp_postmeta, где каждому посту соответствуют ключи и значения мета-данных.
Как добавить собственные поля вручную через админку WordPress
По умолчанию WordPress имеет встроенный функционал для добавления собственных полей, но он скрыт в редакторе. Чтобы его включить, проделайте следующие шаги:
- Откройте редактор записи или страницы.
- В правом верхнем углу нажмите на три точки и выберите «Настройки».
- В разделе «Панели» активируйте опцию «Собственные поля».
Теперь внизу редактора появится блок для добавления ключа и значения. Это самый простой способ — но он подходит для быстрого добавления и редактирования мета-данных вручную.
Добавление собственных полей программно с помощью функций в functions.php
Для автоматизации и точного контроля рекомендуется добавлять собственные поля через функции в теме или плагине. Рассмотрим базовый пример добавления мета-поля при сохранении записи.
Регистрация мета-поля и сохранение данных
Добавим поле wpaction_custom_subtitle, в котором будем хранить подзаголовок записи.
function wpaction_save_custom_subtitle($post_id) {
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
if (!current_user_can('edit_post', $post_id)) return;
if (!isset($_POST['wpaction_custom_subtitle_field'])) return;
$subtitle = sanitize_text_field($_POST['wpaction_custom_subtitle_field']);
update_post_meta($post_id, 'wpaction_custom_subtitle', $subtitle);
}
add_action('save_post', 'wpaction_save_custom_subtitle');Здесь мы проверяем, что это не автосохранение, что пользователь имеет права редактирования, и что поле передано из формы. Далее сохраняем значение в базу.
Добавление поля в админ-панель записи
Чтобы пользователь мог вводить подзаголовок, добавим мета-бокс в редактор:
function wpaction_add_custom_meta_box() {
add_meta_box(
'wpaction_subtitle_box',
'Подзаголовок записи',
'wpaction_subtitle_box_html',
'post',
'normal',
'high'
);
}
add_action('add_meta_boxes', 'wpaction_add_custom_meta_box');
function wpaction_subtitle_box_html($post) {
$value = get_post_meta($post->ID, 'wpaction_custom_subtitle', true);
echo '<label for="wpaction_custom_subtitle_field">Введите подзаголовок:</label>';
echo '<input type="text" id="wpaction_custom_subtitle_field" name="wpaction_custom_subtitle_field" value="' . esc_attr($value) . '" style="width:100%;" />';
}Теперь в редакторе у записей появится поле для ввода подзаголовка.
Вывод собственных полей в шаблоне темы
Чтобы вывести сохранённое мета-значение в шаблоне, используйте функцию get_post_meta. Например, в файле single.php после заголовка:
$subtitle = get_post_meta(get_the_ID(), 'wpaction_custom_subtitle', true);
if ($subtitle) {
echo '<h2 class="post-subtitle">' . esc_html($subtitle) . '</h2>';
}Это добавит подзаголовок под основным заголовком записи. Можно стилизовать класс post-subtitle через CSS по своему усмотрению.
Полезные плагины для расширенного управления собственными полями
Если вам нужен более мощный и гибкий интерфейс, рассмотрите эти плагины:
- Advanced Custom Fields (ACF) — самый популярный плагин для создания, группировки и вывода собственных полей. Имеет удобный визуальный редактор и поддержку различных типов полей.
- Meta Box — аналог ACF с множеством расширений и гибкой системой шаблонов.
- CMB2 — инструмент для разработчиков с удобным API и возможностью создавать мета-боксы через код.
Все эти плагины позволяют создавать сложные структуры данных без необходимости писать много кода, но если вы хотите минимизировать зависимости, лучше использовать собственные функции, как показано выше.
Заключение: когда стоит использовать собственные поля и как их правильно организовать
Собственные поля — это основа расширения возможностей WordPress. Они позволяют создавать уникальный контент и функционал без изменения ядра и структуры базы данных. Однако при использовании собственных полей важно придерживаться следующих правил:
- Используйте префиксы (например,
wpaction_) в названиях ключей, чтобы избежать конфликтов с другими мета-данными. - Сохраняйте и выводите данные с помощью функций WordPress (
update_post_meta,get_post_meta), чтобы обеспечить безопасность и совместимость. - При необходимости добавляйте в админ-панель удобные мета-боксы для удобного управления.
- Если проект большой и сложный, подумайте о плагинах с визуальным редактором, чтобы упростить администрирование.
Таким образом, даже без плагинов вы можете создавать мощные и удобные решения на базе собственных полей в WordPress, что даст вашему сайту гибкость и контроль.