Как сделать свойства контакта в WordPress в Contact Form 7

Contact Form 7 — один из самых популярных плагинов для создания форм обратной связи на WordPress. Однако стандартный функционал не всегда покрывает все требования, особенно если нужны дополнительные свойства контакта, например, поле для выбора категории, дата рождения или пользовательские метки. В этой статье разберём, как расширить форму Contact Form 7, добавить новые свойства контакта и обработать их на стороне WordPress.

Почему важны дополнительные свойства контакта в формах WordPress

Стандартные формы Contact Form 7 включают базовые поля: имя, email, сообщение. Но часто заказчики просят добавить специфические поля — телефон, дату, выбор из списка или даже загрузку файлов. Чтобы эти данные не просто собирались, а могли использоваться дальше (например, сохранялись в базе, отправлялись в CRM или использовались в рассылках), нужно настраивать расширенную обработку данных.

Добавление свойств контакта повышает точность сбора информации и улучшает коммуникацию с пользователями. Это особенно актуально для сайтов с большим потоком заявок и необходимостью их последующего анализа.

Расширение Contact Form 7: добавление новых полей

Contact Form 7 поддерживает множество типов полей, которые можно добавить прямо в админке. Например, для создания нового свойства можно добавить в форму такой код:

[text* your-phone placeholder "Введите телефон"]

Здесь создаётся обязательное текстовое поле для телефона с подсказкой. Аналогично можно добавить [date your-birthday] для даты, [select your-category "Вопрос" "Заказ" "Обратная связь"] для выбора категории.

Но чтобы эти данные сохранялись и были доступны в админке, нужно использовать дополнительные плагины или писать свой код.

Плагины для сохранения дополнительных свойств

Рассмотрим несколько популярных расширений:

  • Flamingo — официальный плагин от автора Contact Form 7, который сохраняет все отправленные сообщения, включая дополнительные поля, в базу данных WordPress. Удобно для просмотра всех запросов в админке.
  • Contact Form 7 Database Addon – CFDB7 — сохраняет все данные форм в отдельной таблице и позволяет экспортировать их в CSV.
  • Advanced Custom Fields (ACF) — можно интегрировать с Contact Form 7 для расширенного управления метаданными, но требует дополнительной настройки.

Обработка пользовательских свойств контакта с помощью кода

Если нужно не просто сохранить данные, а обработать их, например, отправить в CRM или добавить в пользовательские метаданные, можно написать свой обработчик. Для этого используется хук wpcf7_before_send_mail.

Пример функции, которая получает дополнительные поля и сохраняет их в пользовательские метаданные (если пользователь авторизован):

add_action('wpcf7_before_send_mail', 'wpsync_save_custom_contact_properties');
function wpsync_save_custom_contact_properties($contact_form) {
    $submission = WPCF7_Submission::get_instance();
    if ($submission) {
        $data = $submission->get_posted_data();
        if (is_user_logged_in()) {
            $user_id = get_current_user_id();
            if (!empty($data['your-phone'])) {
                update_user_meta($user_id, 'wpsync_phone', sanitize_text_field($data['your-phone']));
            }
            if (!empty($data['your-birthday'])) {
                update_user_meta($user_id, 'wpsync_birthday', sanitize_text_field($data['your-birthday']));
            }
        }
    }
}

Этот код берет данные из полей с именами your-phone и your-birthday и сохраняет их как метаданные текущего пользователя. Аналогично можно отправлять данные через API в внешние сервисы.

Добавление в письмо и админку

Чтобы новые поля показывались в письме, нужно добавить соответствующие теги в шаблон письма Contact Form 7, например:

Телефон: [your-phone]
Дата рождения: [your-birthday]

В админке Flamingo эти поля будут видны автоматически. Для других плагинов или собственной таблицы потребуется дополнительная настройка.

Советы по безопасности и валидации пользовательских данных

При добавлении новых свойств важно правильно валидировать и очищать данные, чтобы избежать XSS и других уязвимостей. Contact Form 7 автоматически обрабатывает базовую валидацию, но для специфичных форматов (например, телефон, дата) лучше добавить собственные фильтры.

Пример добавления собственного валидатора для поля телефона:

add_filter('wpcf7_validate_text*', 'wpsync_custom_phone_validation', 20, 2);
function wpsync_custom_phone_validation($result, $tag) {
    $name = $tag->name;
    if ($name == 'your-phone') {
        $phone = isset($_POST[$name]) ? trim($_POST[$name]) : '';
        if (!preg_match('/^\+?\d{10,15}$/', $phone)) {
            $result->invalidate($tag, 'Введите корректный номер телефона');
        }
    }
    return $result;
}

Этот фильтр проверяет, что номер телефона содержит от 10 до 15 цифр и может начинаться с плюса.

Итоги и рекомендации

Добавление свойств контакта в Contact Form 7 — простой способ расширить функциональность сайта на WordPress. Важно грамотно добавить поля, обеспечить их сохранение и безопасность. Используйте проверенные плагины, или если нужно, пишите собственные обработчики с использованием хуков Contact Form 7.

Такой подход позволит собрать и эффективно использовать данные пользователей, улучшить качество обратной связи и автоматизировать бизнес-процессы.

Как автоматизировать очистку базы данных WordPress для ускорения сайта
15.12.2025
Как удалить оставшиеся данные от удалённых плагинов WordPress
29.11.2025
Как сделать свойства пользователя в WordPress через пользовательские мета-поля
07.03.2026
Отслеживать изменения в постах WordPress с помощью hooks и webhook
02.01.2026
Как запретить загрузку внешних iframe в WordPress для безопасности сайта
18.02.2026