wpforms.ru wordpress WPForms.ru

Заполнение формы WPForms через REST API WordPress

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

Почему использовать REST API для заполнения WPForms?

REST API — современный и удобный способ взаимодействия с WordPress и его плагинами. С помощью REST API можно отправлять данные в форму без необходимости вручную заполнять поля на сайте. Это полезно, например, если у вас есть внешнее приложение, CRM или мобильный клиент, который должен отправлять данные в WPForms.

Главные преимущества такого подхода:

  • Автоматизация сбора данных.
  • Интеграция с внешними сервисами.
  • Возможность отправлять данные из любого клиента, который умеет работать с HTTP.

Однако WPForms из коробки не предоставляет готового REST API для отправки форм, поэтому нам придётся реализовать собственный endpoint, который будет принимать данные, валидировать их и отправлять в WPForms.

Создание собственного REST API endpoint для отправки формы WPForms

Чтобы реализовать отправку данных через REST API, создадим кастомный endpoint в WordPress. Этот endpoint будет принимать POST-запрос с данными формы, проверять их и вызывать API WPForms для создания записи.

Регистрация REST API маршрута

Добавим следующий код в файл functions.php вашей темы или в отдельный плагин:

add_action('rest_api_init', function () {
    register_rest_route('wpforms-api/v1', '/submit/', array(
        'methods' => 'POST',
        'callback' => 'wpforms_ru_submit_form',
        'permission_callback' => function () {
            return current_user_can('edit_posts'); // или своя логика авторизации
        },
    ));
});

Здесь мы создаём маршрут /wp-json/wpforms-api/v1/submit/, который принимает POST-запросы и вызывает функцию wpforms_ru_submit_form. В permission_callback прописана базовая проверка прав — её можно заменить на проверку API токена или OAuth.

Обработка данных и отправка формы

Реализуем функцию, которая принимает данные и отправляет их в WPForms:

function wpforms_ru_submit_form(WP_REST_Request $request) {
    $data = $request->get_json_params();
    $form_id = isset($data['form_id']) ? intval($data['form_id']) : 0;
    $fields = isset($data['fields']) ? $data['fields'] : array();

    if (!$form_id || empty($fields)) {
        return new WP_REST_Response(array('error' => 'Неверные параметры'), 400);
    }

    // Получаем объект формы
    $form = wpforms()->form->get($form_id);
    if (!$form) {
        return new WP_REST_Response(array('error' => 'Форма не найдена'), 404);
    }

    // Преобразуем поля в формат WPForms
    $entry_data = array();
    foreach ($fields as $field_id => $value) {
        $entry_data[$field_id] = sanitize_text_field($value);
    }

    // Создаём запись в WPForms
    $entry_id = wpforms()->entry->add(array(
        'form_id' => $form_id,
        'fields' => $entry_data,
        'post_id' => 0,
    ));

    if (!$entry_id) {
        return new WP_REST_Response(array('error' => 'Ошибка при сохранении формы'), 500);
    }

    // Можно отправить уведомления, если требуется
    wpforms()->process->send_notifications($entry_id);

    return new WP_REST_Response(array('success' => true, 'entry_id' => $entry_id), 200);
}

В этом примере:

  • Мы принимаем form_id и массив fields, где ключ — ID поля WPForms, значение — данные.
  • Проверяем, что форма существует.
  • Сохраняем данные как новую запись формы.
  • Опционально отправляем уведомления на почту.

Обратите внимание, что для корректной работы функции wpforms()->entry->add() и отправки уведомлений нужно, чтобы WPForms был активен и правильно настроен.

Пример отправки данных на созданный REST API endpoint

Для теста можно использовать curl или любой HTTP клиент. Пример запроса:

curl -X POST 'https://example.com/wp-json/wpforms-api/v1/submit/' \
-H 'Content-Type: application/json' \
-d '{
  "form_id": 123,
  "fields": {
    "1": "Иван Иванов",
    "2": "ivan@example.com",
    "3": "Текст сообщения"
  }
}'

Здесь:

  • form_id — ID вашей формы WPForms.
  • fields — ключи — это ID полей формы, значения — данные для отправки.

Чтобы узнать ID поля, откройте редактор формы в WPForms и наведите курсор на поле — в URL или в настройках будет ID.

Безопасность и авторизация

Очень важно обезопасить свой API endpoint. В примере выше использована базовая проверка прав текущего пользователя. Для публичных API лучше использовать:

  • Авторизацию по токену (например, JWT или OAuth).
  • Ограничение по IP.
  • Валидацию и фильтрацию данных.

Также рекомендуется добавить nonce или другие механизмы защиты от CSRF.

Расширение функционала: условная логика и кастомные поля

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

  • Отправлять только активные поля.
  • Корректно форматировать данные для полей типа «выбор», «файлы» и т.п.
  • Возможно, реализовать отдельную логику проверки и обработки данных перед сохранением.

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

Альтернативные плагины и инструменты для интеграции с WPForms

Если хочется расширить возможности отправки и интеграции с внешними системами, рекомендуем обратить внимание на плагины:

  • WPForms Webhooks — добавляет возможность отправлять данные формы на сторонние URL.
  • Clearfy Pro — оптимизация и расширение возможностей WPForms и WordPress.

Эти инструменты помогут вам сделать интеграцию более гибкой и автоматизированной.

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

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

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