Собственные поля (custom fields) в WordPress — это мощный инструмент для расширения функциональности вашего сайта. Они позволяют добавлять дополнительную информацию к записям, страницам и любым другим типам контента. В этой статье мы подробно разберем, как создать и использовать собственные поля, используя как встроенные возможности WordPress, так и популярные плагины. Также приведем примеры кода, которые помогут вам интегрировать собственные поля в темы и плагины.
Что такое собственные поля и зачем они нужны в WordPress
Собственные поля — это метаданные, которые можно прикрепить к записи или другому объекту в WordPress. Они позволяют хранить дополнительные данные, которые не входят в стандартный набор полей. Например, вы можете добавить цену товара, дату проведения события, рейтинг статьи и многое другое.
Использование собственных полей расширяет возможности CMS, позволяя создавать уникальные сайты без необходимости изобретать сложные конструкции и базы данных. Они отлично подходят для сайтов с каталогами, магазинами, событиями и пр.
В WordPress уже есть встроенная поддержка собственных полей, но интерфейс их добавления достаточно простой и не всегда удобен. Для улучшения работы есть плагины, которые делают процесс более наглядным и удобным.
Как добавить собственные поля вручную через админку WordPress
По умолчанию в редакторе записей WordPress есть опция «Собственные поля», но она может быть скрыта. Чтобы включить ее, нужно в редакторе нажать на три точки в правом верхнем углу и выбрать «Настройки» > «Дополнительно» > включить «Собственные поля».
После этого внизу редактора появится метабокс, где можно добавить название поля и его значение. Однако этот способ подходит только для простых задач и одного типа данных.
Если вы хотите, чтобы собственные поля отображались в шаблонах темы, то нужно вывести их программно. Например, чтобы вывести значение поля с ключом «wpone_price», в файле single.php темы можно добавить такой код:
<?php
$value = get_post_meta(get_the_ID(), 'wpone_price', true);
if ($value) {
echo '<p>Цена: ' . esc_html($value) . '</p>';
}
?>Пояснение к коду
Функция get_post_meta() получает значение метаполя по ключу для текущей записи. Третий параметр true возвращает одиночное значение, а не массив.
Обязательно используйте функции экранирования, например, esc_html(), чтобы избежать XSS-уязвимостей.
Использование плагинов для работы с собственными полями
Для удобного создания, редактирования и вывода собственных полей часто используют плагины. Рассмотрим два популярных:
- Advanced Custom Fields (ACF) — самый популярный плагин для создания любых полей с удобным интерфейсом и множеством типов данных.
- Meta Box — мощный инструмент с большим количеством расширений и возможностью программного создания метаполей.
Рассмотрим пример создания поля с помощью ACF.
Пример создания поля с помощью ACF
1. Установите и активируйте плагин Advanced Custom Fields.
2. В админке WordPress перейдите в меню «Custom Fields» и создайте новую группу полей.
3. Добавьте новое поле, например, «Цена» с ключом wpone_price, тип — число.
4. Настройте место отображения — например, для записей (post).
5. Сохраните группу.
Теперь при редактировании записи появится поле для ввода цены.
Чтобы вывести это поле в шаблоне, используйте функцию ACF:
<?php
$price = get_field('wpone_price');
if ($price) {
echo '<p>Цена: ' . esc_html($price) . ' руб.</p>';
}
?>Программное добавление собственных полей в WordPress
Если вам нужно автоматически добавлять или изменять собственные поля программно, используйте функцию update_post_meta. Например, при сохранении записи через хуки можно добавить или обновить метаполе.
Пример функции, которая добавляет поле с ключом wpone_custom_field и значением «Пример» при сохранении записи:
function wpone_add_custom_field($post_id) {
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
if (isset($_POST['wpone_custom_field'])) {
update_post_meta($post_id, 'wpone_custom_field', sanitize_text_field($_POST['wpone_custom_field']));
}
}
add_action('save_post', 'wpone_add_custom_field');В форме редактирования записи нужно добавить поле ввода с именем wpone_custom_field, чтобы пользователь мог менять значение.
Вывод собственных полей в цикле WordPress
Если у вас есть множество записей с собственными полями, их можно вывести в списке. Например, в файле archive.php или index.php добавьте:
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php
$price = get_post_meta(get_the_ID(), 'wpone_price', true);
if ($price) {
echo '<p>Цена: ' . esc_html($price) . ' руб.</p>';
}
?>
<?php the_excerpt(); ?>
<?php endwhile; endif; ?>Так вы сможете вывести цены или другие данные, которые добавили через собственные поля.
Советы по безопасности и оптимизации при работе с собственными полями
1. Всегда фильтруйте и проверяйте данные, поступающие в метаполя, особенно если они вводятся пользователями.
2. Для вывода данных используйте функции экранирования (esc_html(), esc_attr()), чтобы избежать XSS атак.
3. Не храните в собственных полях большие объемы данных или сложные структуры — лучше использовать отдельные таблицы или другие подходы.
4. При большом количестве метаданных используйте кэширование для снижения нагрузки на базу данных.
5. При создании плагинов или тем придерживайтесь префиксов в названиях функций и ключах метаполей (например, wpone_), чтобы избежать конфликтов.