Собственные поля (custom fields) в WordPress позволяют добавлять дополнительную информацию к записям, страницам и другим типам контента. Это мощный инструмент для расширения функционала сайта без изменения основной темы. В этой статье мы подробно разберём, как правильно создать и использовать собственные поля, рассмотрим популярные плагины и примеры кода для автоматизации работы.
Что такое собственные поля в WordPress и зачем они нужны
Собственные поля — это метаданные, которые можно прикрепить к любому объекту в WordPress, например, к записи или странице. Они позволяют хранить дополнительную информацию, которая не входит в стандартные поля, такие как заголовок или содержание.
Например, если у вас сайт с отзывами, вы можете добавить собственные поля для оценки, имени автора или даты посещения. Это значительно расширяет возможности вывода и фильтрации контента.
В админке WordPress по умолчанию собственные поля скрыты. Их можно включить через меню «Настройки экрана», но для удобства работы лучше использовать специальные плагины или писать собственный код.
Как добавить собственные поля вручную через админку WordPress
1. Откройте нужную запись или страницу для редактирования.
2. Вверху справа нажмите на три точки и выберите «Настройки экрана».
3. Отметьте пункт «Собственные поля».
4. Внизу появится метабокс, где можно добавить новое поле, указав ключ и значение.
Этот способ удобен для единичных записей, но не подходит для массового добавления или сложной логики.
Ограничения стандартных собственных полей
Стандартные собственные поля не поддерживают удобный интерфейс для сложных структур, например, повторяющихся элементов или массивов. Также нет валидации данных и автоматического вывода в теме. Чтобы решить эти задачи, рекомендуют использовать плагины или писать собственные метабоксы.
Лучшие плагины для работы с собственными полями в WordPress
Для расширенной работы с собственными полями существуют несколько популярных плагинов:
- Advanced Custom Fields (ACF) — самый популярный плагин, который позволяет создавать удобные интерфейсы для ввода данных, поддерживает разные типы полей, условную логику и повторяющиеся блоки.
- Meta Box — мощный набор инструментов с большим количеством расширений, хорошо подходит для разработчиков, которым нужны гибкие настройки.
- CMB2 — бесплатный и лёгкий в использовании фреймворк для добавления собственных полей и метабоксов.
Все эти плагины помогают добавить поля без необходимости писать много кода и позволяют удобно выводить их данные в шаблонах.
Пример создания поля с помощью Advanced Custom Fields
После установки и активации ACF:
- Перейдите в меню «Custom Fields» и нажмите «Добавить новую».
- Создайте группу полей, например, «Информация о продукте».
- Добавьте поле «Цена» типа «Число» и поле «Наличие» типа «Выпадающий список».
- Установите правила отображения, например, для записей типа «product».
- Сохраните группу.
Теперь при создании/редактировании записи типа product вы увидите новые поля для заполнения.
Как вывести собственные поля в теме WordPress с помощью кода
Для вывода значений собственных полей в шаблонах используйте функцию get_post_meta(). Предположим, что вы хотите вывести поле «Цена» для текущей записи.
function wplist_get_custom_price() {
$price = get_post_meta(get_the_ID(), 'price', true);
if ($price) {
echo '<p>Цена: ' . esc_html($price) . ' руб.</p>';
} else {
echo '<p>Цена не указана</p>';
}
}Вызовите функцию в нужном месте шаблона, например, в single.php:
<?php wplist_get_custom_price(); ?>Для полей, созданных через ACF, можно использовать функцию get_field():
$price = get_field('price');
if ($price) {
echo '<p>Цена: ' . esc_html($price) . ' руб.</p>';
}Создание собственного метабокса с помощью кода
Если вы хотите полностью контролировать процесс, можно добавить метабокс вручную. Ниже пример добавления метабокса с полем «Телефон» для записей:
function wplist_add_phone_metabox() {
add_meta_box(
'wplist_phone',
'Телефон',
'wplist_phone_metabox_callback',
'post',
'side'
);
}
add_action('add_meta_boxes', 'wplist_add_phone_metabox');
function wplist_phone_metabox_callback($post) {
wp_nonce_field('wplist_save_phone', 'wplist_phone_nonce');
$value = get_post_meta($post->ID, '_wplist_phone', true);
echo '<label for="wplist_phone_field">Введите телефон:</label> ';
echo '<input type="text" id="wplist_phone_field" name="wplist_phone_field" value="' . esc_attr($value) . '" size="25" />';
}
function wplist_save_phone_metabox($post_id) {
if (!isset($_POST['wplist_phone_nonce']) || !wp_verify_nonce($_POST['wplist_phone_nonce'], 'wplist_save_phone')) {
return;
}
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
if (!current_user_can('edit_post', $post_id)) {
return;
}
if (isset($_POST['wplist_phone_field'])) {
update_post_meta($post_id, '_wplist_phone', sanitize_text_field($_POST['wplist_phone_field']));
}
}
add_action('save_post', 'wplist_save_phone_metabox');Теперь в редакторе записей появится поле для ввода телефона, а значение сохранится в метаданных.
Примеры практического применения собственных полей
Собственные поля часто используют для:
- Создания каталогов товаров с дополнительными характеристиками.
- Добавления информации для SEO, например, альтернативных описаний.
- Организации рейтинговых систем и отзывов с дополнительными параметрами.
- Вывода пользовательских кнопок или ссылок в зависимости от типа записи.
Одна из частых задач — создание кастомных шаблонов, которые выводят данные из собственных полей. При правильном использовании это значительно расширяет возможности сайта без потери производительности.
Советы по оптимизации и безопасности
1. Всегда используйте функции очистки и проверки данных, такие как sanitize_text_field() и esc_html(), чтобы избежать XSS-уязвимостей.
2. Для сложных структур используйте сериализацию или JSON, но учитывайте производительность при запросах.
3. Избегайте хранения больших объёмов данных в собственных полях — для этого лучше использовать кастомные таблицы.
4. При работе с метабоксами обязательно проверяйте nonce и права пользователя.
Вывод
Собственные поля — незаменимый инструмент для любого сайта на WordPress, если нужно добавить уникальные данные к контенту. Знание, как их правильно создавать, выводить и защищать, позволит создавать качественные и расширяемые проекты. Используйте плагины для удобства и пишите собственный код для максимального контроля.