WPForms: автоматическая передача данных из формы в поля пользовательского профиля WordPress

В чем суть задачи и когда это нужно

Часто в проектах на WordPress требуется, чтобы данные, введённые пользователем в форму WPForms, автоматически сохранялись в его профиль — например, дополнительный телефон, адрес или дата рождения. Это актуально для сайтов с регистрацией, членством или личными кабинетами, где нужно расширить стандартный профиль WordPress пользовательскими метаданными.

По умолчанию WPForms не сохраняет данные в мета-поля пользователя, только отправляет письма или сохраняет в записи формы. Поэтому приходится реализовывать кастомную обработку отправленных данных.

Диагностика: как понять, что данные не передаются в профиль

  • Проверка базы данных: в таблице wp_usermeta отсутствуют новые записи по ключам кастомных полей.
  • В профиле пользователя в админке WordPress новые поля остаются пустыми.
  • Нет ошибок валидации формы, форма успешно отправляется, но данные не сохраняются.
  • В логах WPForms и сервера нет указаний на запись метаданных.

Пошаговое решение задачи: сохранение данных WPForms в пользовательские метаполя

1. Определите ID формы и имена полей

В админке WPForms выясните ID нужной формы и имена (name/field_id) полей, которые хотите сохранить в профиль.

2. Используйте хук wpforms_process_complete для обработки отправки

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

3. Пример кода для functions.php темы или плагина

add_action('wpforms_process_complete', 'save_wpforms_data_to_user_meta', 10, 4);
function save_wpforms_data_to_user_meta($fields, $entry, $form_data, $entry_id) {
    // Замените 123 на ID вашей формы
    if ($form_data['id'] != 123) {
        return;
    }

    // Проверяем, что пользователь авторизован
    $user_id = get_current_user_id();
    if (!$user_id) {
        return; // Неавторизованные не сохраняем
    }

    // Пример: поле с ID 1 - телефон, ID 2 - дата рождения
    $phone = isset($fields[1]) ? sanitize_text_field($fields[1]['value']) : '';
    $birth_date = isset($fields[2]) ? sanitize_text_field($fields[2]['value']) : '';

    if ($phone) {
        update_user_meta($user_id, 'phone_number', $phone);
    }
    if ($birth_date) {
        update_user_meta($user_id, 'birth_date', $birth_date);
    }
}

Проверка результата после внедрения

  • Авторизуйтесь под пользователем, отправьте форму с заполнением нужных полей.
  • В админке WordPress перейдите в профиль пользователя (Пользователи > Все пользователи > нужный пользователь).
  • Убедитесь, что кастомные поля (phone_number, birth_date) заполнены новыми значениями.
  • Проверьте таблицу wp_usermeta в базе данных, запросом: SELECT * FROM wp_usermeta WHERE user_id = {user_id} AND meta_key IN ('phone_number','birth_date');
  • Отсутствие ошибок в логах сервера и WPForms.

Частые ошибки и как их исправить

  • Данные не сохраняются: убедитесь, что ID формы и ID полей совпадают с реальными из WPForms.
  • Функция не вызывается: проверьте правильность подключения хука и что код загружается (в functions.php темы или плагина).
  • Данные сохраняются, но не отображаются: добавьте вывод метаданных в шаблонах профиля или используйте плагины для отображения пользовательских полей.
  • Пользователь не авторизован: если нужно сохранять данные для гостей, потребуется другая логика, например, создание пользователя на лету.

Практические советы по безопасности и производительности

  • Всегда фильтруйте и санитизируйте входящие данные через sanitize_text_field, sanitize_email и другие функции.
  • Проверяйте, что пользователь авторизован, чтобы не сохранять данные анонимных.
  • Для больших форм и большого количества данных используйте отложенную обработку через очередь (wp-cron или внешние сервисы).
  • Ограничьте сохранение только изменённых данных, чтобы не перегружать базу.

Сравнение вариантов реализации

МетодПлюсыМинусыПример использования
Хук wpforms_process_completeПрямой, простой, быстрое внедрениеОбрабатывает только после успешной отправки, требует авторизацииСохранение пользовательских метаданных
Webhook + внешний скриптИнтеграция с внешней CRM, расширяемостьСложнее настроить, задержка обработкиОтправка данных в CRM, аналитику
Кастомный плагин с AJAXГибкость, интерактивностьБольше кода, сложность поддержкиДинамическое сохранение и валидация
Как создать форму опроса с условиями в WordPress с WPForms
06.03.2026
Защита форм WPForms от спама с помощью reCAPTCHA и CAPTCHA
06.01.2026
Интеграция WPForms с SOAP API: как отправлять данные формы в SOAP-сервис
19.04.2026
WPForms: создание динамических расчетных полей в формах WordPress
01.02.2026
WPForms: динамические поля выбора из списка и автоподстановка значений
13.01.2026