wpforms.ru wordpress WPForms.ru

Как WPForms получать данные из других плагинов и внешних источников

WPForms — один из самых популярных плагинов для создания форм в WordPress. Часто возникает задача не просто собрать данные от пользователя, но и автоматически подставить в форму информацию из других плагинов, например, метаданные пользователя, данные корзины WooCommerce, или внешних API. В этой статье разберём, как динамически получать и использовать такие данные в WPForms с помощью PHP и JavaScript.

Почему важно интегрировать WPForms с другими источниками данных

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

Кроме того, интеграция с внешними API позволяет подгружать актуальную информацию, например, курсы валют, адреса из геосервисов, список городов, и многое другое, что невозможно реализовать вручную.

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

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

Получение данных пользователя из профиля WordPress

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

add_filter('wpforms_field_value_wpforms_ru_name', 'wpforms_ru_fill_user_name', 10, 3);
function wpforms_ru_fill_user_name($value, $field_id, $form_data) {
    if (is_user_logged_in()) {
        $current_user = wp_get_current_user();
        return $current_user->display_name;
    }
    return $value;
}

add_filter('wpforms_field_value_wpforms_ru_email', 'wpforms_ru_fill_user_email', 10, 3);
function wpforms_ru_fill_user_email($value, $field_id, $form_data) {
    if (is_user_logged_in()) {
        $current_user = wp_get_current_user();
        return $current_user->user_email;
    }
    return $value;
}

Здесь мы используем фильтры wpforms_field_value_* для подстановки значений в поля с параметром Default Value -> Dynamic Population, где ключ динамической подстановки — wpforms_ru_name и wpforms_ru_email. В настройках поля укажите эти ключи, чтобы динамически заполнить поля.

Подстановка данных из WooCommerce (например, данные корзины)

Если у вас интернет-магазин на WooCommerce, можно подставлять сумму корзины или список товаров прямо в форму WPForms.

add_filter('wpforms_field_value_wpforms_ru_cart_total', 'wpforms_ru_fill_cart_total', 10, 3);
function wpforms_ru_fill_cart_total($value, $field_id, $form_data) {
    if (class_exists('WC_Cart') && WC()->cart) {
        return WC()->cart->get_cart_total(); // возвращает сумму в html формате
    }
    return $value;
}

Таким образом, поле с динамической подстановкой wpforms_ru_cart_total будет показывать актуальную сумму корзины при открытии формы.

Интеграция WPForms с внешними API для динамического заполнения

Пример: получение списка городов из внешнего API

Допустим, у вас есть API, возвращающий список городов в JSON, и вы хотите заполнить поле select в форме WPForms.

WPForms не поддерживает динамическое заполнение select напрямую через PHP, но можно использовать JavaScript для этого.

add_action('wp_footer', 'wpforms_ru_load_cities_js');
function wpforms_ru_load_cities_js() {
    if (!is_page() || !function_exists('wpforms')) return;
    ?>
    <script>
    document.addEventListener('DOMContentLoaded', function() {
        var select = document.querySelector('select[name="wpforms[fields][123]"]'); // замените 123 на ID поля
        if (!select) return;

        fetch('https://example.com/api/cities')
          .then(response => response.json())
          .then(data => {
              data.cities.forEach(city => {
                  var option = document.createElement('option');
                  option.value = city.id;
                  option.text = city.name;
                  select.appendChild(option);
              });
          })
          .catch(error => console.error('Ошибка загрузки городов:', error));
    });
    </script>
    <?php
}

В этом примере JavaScript загружает список городов и добавляет их в select поле при загрузке страницы. Важно указать правильный name поля и endpoint API.

Получение данных через AJAX и обновление полей

Если нужно менять поля формы в зависимости от выбора пользователя, можно использовать AJAX-запросы к серверу через wp-admin/admin-ajax.php.

Пример: при выборе страны подгрузить список городов.

add_action('wp_ajax_wpforms_ru_get_cities', 'wpforms_ru_get_cities_callback');
add_action('wp_ajax_nopriv_wpforms_ru_get_cities', 'wpforms_ru_get_cities_callback');
function wpforms_ru_get_cities_callback() {
    $country = sanitize_text_field($_POST['country']);
    // Тут вызываем API или получаем города из БД по стране
    $cities = [];
    if ($country === 'ru') {
        $cities = [ ['id' => '1', 'name' => 'Москва'], ['id' => '2', 'name' => 'Санкт-Петербург'] ];
    }
    wp_send_json_success($cities);
}

JavaScript для отправки AJAX-запроса:

document.querySelector('select[name="wpforms[fields][country]"]').addEventListener('change', function() {
    var country = this.value;
    fetch('<?php echo admin_url('admin-ajax.php'); ?>', {
        method: 'POST',
        headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
        body: 'action=wpforms_ru_get_cities&country=' + country
    })
    .then(res => res.json())
    .then(data => {
        if (data.success) {
            var citySelect = document.querySelector('select[name="wpforms[fields][city]"]');
            citySelect.innerHTML = '';
            data.data.forEach(function(city) {
                var opt = document.createElement('option');
                opt.value = city.id;
                opt.text = city.name;
                citySelect.appendChild(opt);
            });
        }
    });
});

Обработка и сохранение данных из других источников вместе с WPForms

Иногда нужно не только подставить данные в форму, но и сохранить или обработать их вместе с ответами. WPForms предоставляет хук wpforms_process_complete для действий после отправки формы.

add_action('wpforms_process_complete', 'wpforms_ru_process_external_data', 10, 4);
function wpforms_ru_process_external_data($fields, $entry, $form_data, $entry_id) {
    // Например, получить дополнительные данные из другого плагина
    $custom_data = get_user_meta(get_current_user_id(), 'custom_field', true);
    // Сохранить их в мета данных записи формы
    update_post_meta($entry_id, '_wpforms_custom_data', $custom_data);
}

Так можно расширять стандартный функционал WPForms, интегрируя данные из разных источников.

Рекомендации и плагины для расширения интеграций WPForms

Для упрощения интеграций стоит рассмотреть плагины, которые расширяют WPForms или добавляют API-интерфейсы:

  • WPForms Webhooks — позволяет отправлять данные форм на внешние URL;
  • Clearfy Pro — оптимизирует работу WordPress и совместимость плагинов;
  • WPGPT для автоматической генерации контента на основе данных из форм;
  • Custom интеграции через functions.php или собственные плагины.

Использование этих инструментов позволит создавать более мощные и удобные формы с динамическим наполнением и обработкой.

×
День SEO
Время сделать подарок своему WordPress!
-20% на премиум

шаблоны и плагины

Порадуй свой сайт ⋙