WPForms и WooCommerce: как автоматически подставлять номер телефона пользователя в форму

Задача: автозаполнение номера телефона в WPForms на WooCommerce сайте

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

Диагностика проблемы

Типичная ситуация: пользователь авторизован, но поле «Телефон» в форме WPForms остается пустым. Это происходит, потому что WPForms не умеет по умолчанию подтягивать данные из профиля WooCommerce или WordPress, а номер телефона хранится в метаданных пользователя (user meta).

Чтобы понять, где хранится номер телефона, проверьте в базе данных WordPress в таблице wp_usermeta с помощью запроса:

SELECT meta_key, meta_value FROM wp_usermeta WHERE user_id = YOUR_USER_ID;

В большинстве случаев WooCommerce сохраняет номер телефона в мета-поле billing_phone.

Пошаговое решение: автозаполнение поля телефона в WPForms

1. Добавляем в форму WPForms поле телефона с уникальным идентификатором

В админке WPForms создайте или откройте форму, добавьте поле «Телефон» и в настройках поля задайте CSS класс, например, auto-phone (необязательно, но удобно для селектора).

2. Используем фильтр wpforms_field_value_{$field_id} для подстановки значения

Ниже пример кода, который вставляется в functions.php вашей темы или в плагин для кастомных функций:

add_filter('wpforms_field_value_123', 'wpforms_prefill_phone_from_user', 10, 3);
function wpforms_prefill_phone_from_user($value, $field_id, $form_data) {
    if (is_user_logged_in()) {
        $user_id = get_current_user_id();
        // Получаем номер телефона из WooCommerce
        $phone = get_user_meta($user_id, 'billing_phone', true);
        if ($phone) {
            return $phone;
        }
    }
    return $value;
}

Важное: замените 123 на реальный ID поля телефона в вашей форме WPForms. Его можно узнать, открыв форму в редакторе WPForms и посмотрев ID поля.

3. Активируем автозаполнение в настройках формы

В редакторе WPForms откройте настройки поля телефона и включите опцию «Populate Dynamic Value» (Автозаполнение динамическим значением). В поле для ключа динамического значения укажите 123 (ID поля), чтобы фильтр сработал.

Как проверить, что автозаполнение работает

  • Авторизуйтесь на сайте под пользователем с заполненным телефоном в WooCommerce профиле.
  • Откройте страницу с формой WPForms.
  • Убедитесь, что поле телефона заполнено автоматически без вашего ввода.
  • Для гостей поле должно оставаться пустым.

Частые ошибки и их причины

  • Неверный ID поля в фильтре. Не забудьте заменить 123 на реальный ID поля телефона.
  • Отсутствие номера телефона в профиле пользователя. Если поле billing_phone не заполнено, автозаполнение не сработает.
  • Неактивирована опция «Populate Dynamic Value» в настройках поля. Без неё фильтр не применяется.
  • Кэширование страницы. При кэшировании сайта браузером или плагином кеша может не обновляться поле. Проверьте кеш и по возможности исключите страницу с формой.

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

  • Используйте проверку is_user_logged_in(), чтобы не раскрывать персональные данные гостям.
  • Не храните номер телефона в куках или сессиях — используйте только user meta.
  • Если форма используется на страницах с большим трафиком, минимизируйте нагрузку, не делайте лишних запросов к базе — код выше оптимален.

Таблица сравнения способов автозаполнения номера телефона

СпособОписаниеПлюсыМинусы
Фильтр wpforms_field_value_{$field_id}Подстановка значения из user meta через PHPТочно, безопасно, работает с любым полемТребует доступа к коду
Динамические поля WPForms (через UI)Использование встроенных динамических тегов (ограничено)Просто, без кодаНе всегда есть возможность подтянуть billing_phone
JavaScript автозаполнениеЗаполнение поля на клиенте через JSБез изменений в PHPМенее безопасно, зависит от кэша и JS

Пример альтернативного JS-решения для автозаполнения (если PHP не подходит)

add_action('wp_footer', function() {
    if (is_user_logged_in()) {
        $phone = get_user_meta(get_current_user_id(), 'billing_phone', true);
        if ($phone) {
            ?>
            <script>
            document.addEventListener('DOMContentLoaded', function() {
                var phoneField = document.querySelector('.auto-phone input');
                if (phoneField && !phoneField.value) {
                    phoneField.value = '<?php echo esc_js($phone); ?>';
                }
            });
            </script>
            <?php
        }
    }
});
WPForms: автоматическая обновление формы без перезагрузки страницы
10.03.2026
Как добавить многоуровневую валидацию в WPForms для WordPress
16.02.2026
WPForms: ограничение количества отправок формы одним пользователем в WordPress
16.05.2026
Интеграция WPForms с SMS-уведомлениями: настройка и примеры кода
25.12.2025
Автоматическое удаление старых записей из WPForms в WordPress: практическое решение
27.03.2026