Что такое собственные поля в WordPress и зачем они нужны
Собственные поля, или мета-поля, в WordPress — это дополнительная информация, которую можно прикрепить к записи, странице или любому другому типу записи (custom post type). Они позволяют расширять стандартный функционал WordPress и хранить произвольные данные, которые затем можно вывести на сайте. Например, цена товара, дата события, рейтинг, дополнительный текст и многое другое.
Использование собственных полей без плагинов помогает избежать лишней нагрузки на сайт, ускорить работу и иметь полный контроль над тем, как и где данные сохраняются и отображаются. В этой статье мы разберём, как добавить собственные поля вручную через код, а также как вывести их на фронтенде.
Как добавить собственные поля через мета-боксы в админке WordPress
Регистрация мета-бокса для ввода данных
Первый шаг — создать мета-бокс, который появится на странице редактирования записи. Для этого используем хук add_meta_boxes и функцию add_meta_box. В wp7.ru мы будем использовать префикс wp7_ для своих функций, чтобы избежать конфликтов.
function wp7_add_custom_meta_box() {
add_meta_box(
'wp7_custom_fields',
'Дополнительные поля',
'wp7_custom_meta_box_callback',
'post',
'normal',
'high'
);
}
add_action('add_meta_boxes', 'wp7_add_custom_meta_box');Здесь мы добавляем мета-бокс с ID wp7_custom_fields, заголовком «Дополнительные поля», для типа записи post. При необходимости можно заменить post на page или создать для custom post type.
Создание HTML формы мета-бокса
Теперь нужно написать функцию-обработчик, которая выведет поля ввода внутри мета-бокса:
function wp7_custom_meta_box_callback($post) {
// Добавляем nonce для проверки безопасности
wp_nonce_field('wp7_save_meta_box_data', 'wp7_meta_box_nonce');
$value = get_post_meta($post->ID, '_wp7_custom_field', true);
echo '<label for="wp7_custom_field">Введите дополнительную информацию:</label> ';
echo '<input type="text" id="wp7_custom_field" name="wp7_custom_field" value="' . esc_attr($value) . '" size="25" />';
}Здесь мы выводим текстовое поле. Значение поля подгружается из мета-данных записи, если оно есть.
Сохранение данных из собственных полей
Чтобы сохранить данные из нашего поля при сохранении записи, используем хук save_post. Важно проверить nonce и права пользователя.
function wp7_save_meta_box_data($post_id) {
// Проверка nonce
if (!isset($_POST['wp7_meta_box_nonce']) || !wp_verify_nonce($_POST['wp7_meta_box_nonce'], 'wp7_save_meta_box_data')) {
return;
}
// Проверка автосохранения
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
// Проверка прав пользователя
if (!current_user_can('edit_post', $post_id)) {
return;
}
if (!isset($_POST['wp7_custom_field'])) {
return;
}
$my_data = sanitize_text_field($_POST['wp7_custom_field']);
update_post_meta($post_id, '_wp7_custom_field', $my_data);
}
add_action('save_post', 'wp7_save_meta_box_data');Обратите внимание, что мы используем префикс _wp7_custom_field для ключа мета-данных, чтобы не конфликтовать с другими плагинами или темами.
Вывод собственных полей на фронтенде
Теперь, когда данные сохраняются, их нужно вывести на сайте. Предположим, что мы хотим показать это поле в шаблоне single.php.
$custom_field_value = get_post_meta(get_the_ID(), '_wp7_custom_field', true);
if (!empty($custom_field_value)) {
echo '<div class="wp7-custom-field">Дополнительная информация: ' . esc_html($custom_field_value) . '</div>';
}Вывод можно стилизовать через CSS по классу wp7-custom-field. Если нужно использовать в другом месте — можно оформить в виде шорткода или функции.
Пример создания шорткода для вывода собственного поля
Чтобы упростить использование, добавим шорткод, который будет выводить наше поле в любом месте контента.
function wp7_custom_field_shortcode($atts) {
global $post;
$value = get_post_meta($post->ID, '_wp7_custom_field', true);
if (!empty($value)) {
return '<span class="wp7-custom-field-shortcode">' . esc_html($value) . '</span>';
}
return '';
}
add_shortcode('wp7_custom_field', 'wp7_custom_field_shortcode');Теперь в редакторе можно вставить [wp7_custom_field] и вывести нужное значение.
Советы и лучшие практики при работе с собственными полями
Используйте префиксы для ключей мета-данных
Чтобы избежать конфликтов с другими плагинами и темами, всегда используйте уникальные префиксы для ключей, например _wp7_ в нашем случае.
Обрабатывайте и проверяйте данные
Никогда не сохраняйте данные без проверки и очистки. Используйте функции WordPress для безопасности: sanitize_text_field(), esc_html() и nonce для защиты от CSRF.
Не перегружайте интерфейс
Добавляйте только необходимые поля, чтобы не усложнять админку. Если нужно много полей — лучше использовать кастомные типы записей или специализированные решения.
Альтернативы: плагины для работы с собственными полями
Если вы предпочитаете не писать код, есть популярные плагины, которые помогают создавать и управлять собственными полями:
- Advanced Custom Fields (ACF) — самый популярный плагин с удобным интерфейсом и множеством типов полей.
- Meta Box — мощный и гибкий инструмент для создания мета-боксов и полей.
- CMB2 — бесплатный фреймворк для создания пользовательских полей.
Но, если вы хотите легковесное решение и полный контроль — ручное добавление полей через код, как описано выше, — лучший выбор.