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.
Эти инструменты помогут вам сделать интеграцию более гибкой и автоматизированной.