Contact Form 7 и отправка данных на внешний сервер через REST API

Интеграция Contact Form 7 с внешними сервисами через REST API — востребованная задача для многих разработчиков и владельцев сайтов на WordPress. В этой статье подробно разберём, как настроить Contact Form 7 для отправки данных формы на внешний сервер с помощью REST API. Это позволит расширить возможности сбора и обработки данных, например, отправлять заявки в CRM-системы, сервисы аналитики или другие платформы.

Почему стоит использовать REST API для передачи данных из Contact Form 7

Contact Form 7 по умолчанию отправляет данные форм на email. Однако часто требуется интеграция с внешними системами для автоматизации бизнес-процессов. REST API — современный, универсальный и безопасный способ передачи данных. Он поддерживает передачу данных в формате JSON, позволяет работать с авторизацией и легко масштабируется.

Преимущества использования REST API с Contact Form 7:

  • Автоматическая передача данных в CRM, ERP, маркетинговые платформы;
  • Возможность гибкой обработки данных на стороне сервера;
  • Уменьшение ошибок ручного ввода и ускорение обработки;
  • Возможность использовать современные методы аутентификации и шифрования.

Как реализовать отправку данных Contact Form 7 на внешний REST API

Для реализации нам потребуется использовать хук wpcf7_mail_sent, который срабатывает после успешной отправки формы. В обработчике мы соберём данные формы и отправим их на внешний сервер с помощью функции wp_remote_post.

Пошаговая инструкция

  1. Определите URL вашего внешнего REST API и требования к формату данных.
  2. Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин.
add_action('wpcf7_mail_sent', 'contactform7_send_to_external_api');

function contactform7_send_to_external_api($contact_form) {
    $submission = WPCF7_Submission::get_instance();

    if (!$submission) {
        return;
    }

    $data = $submission->get_posted_data();

    // Здесь укажите ID вашей формы Contact Form 7 для фильтрации
    if ($contact_form->id() != 1234) {
        return;
    }

    // Формируем массив данных для отправки
    $api_data = array(
        'name' => isset($data['your-name']) ? sanitize_text_field($data['your-name']) : '',
        'email' => isset($data['your-email']) ? sanitize_email($data['your-email']) : '',
        'message' => isset($data['your-message']) ? sanitize_textarea_field($data['your-message']) : '',
    );

    // Опции запроса
    $args = array(
        'body' => json_encode($api_data),
        'headers' => array(
            'Content-Type' => 'application/json',
            'Authorization' => 'Bearer your_api_token_here'
        ),
        'timeout' => 15
    );

    $response = wp_remote_post('https://external-api.example.com/endpoint', $args);

    if (is_wp_error($response)) {
        error_log('Contact Form 7 API error: ' . $response->get_error_message());
    } else {
        $code = wp_remote_retrieve_response_code($response);
        if ($code != 200 && $code != 201) {
            error_log('Contact Form 7 API returned HTTP code: ' . $code);
        }
    }
}

В данном примере функция contactform7_send_to_external_api получает данные формы с ID 1234, формирует JSON и отправляет POST-запрос на внешний сервер с заголовком авторизации. Обратите внимание, что нужно заменить URL и токен на ваши реальные значения.

Обработка ошибок и логирование

Очень важно обрабатывать возможные ошибки при отправке запросов. В приведённом примере мы используем error_log для записи ошибок в лог PHP. Вы можете расширить этот функционал, например, отправлять уведомления администратору или сохранять ошибки в отдельную таблицу базы данных.

Для более удобного мониторинга ошибок советую использовать плагины типа Clearfy Pro, которые помогают управлять логами и оптимизировать работу сайта.

Дополнительные советы по безопасности и расширению

При работе с REST API учитывайте следующие рекомендации:

  • Используйте HTTPS для шифрования данных при передаче.
  • Настройте аутентификацию (например, OAuth, Bearer токены) на стороне API.
  • Проверяйте и валидируйте все входящие данные для предотвращения инъекций.
  • Ограничивайте количество запросов к API (rate limiting) для защиты от перегрузок.
  • При необходимости добавьте дополнительные поля в форму и в payload для передачи специфичных данных.

Динамическая отправка данных с учетом разных форм

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

function contactform7_send_to_external_api($contact_form) {
    $submission = WPCF7_Submission::get_instance();
    if (!$submission) {
        return;
    }
    $data = $submission->get_posted_data();
    $form_id = $contact_form->id();

    switch ($form_id) {
        case 1234:
            $url = 'https://api1.example.com/endpoint';
            $api_data = array(
                'name' => sanitize_text_field($data['your-name']),
                'email' => sanitize_email($data['your-email']),
            );
            break;
        case 5678:
            $url = 'https://api2.example.com/submit';
            $api_data = array(
                'phone' => sanitize_text_field($data['your-phone']),
                'message' => sanitize_textarea_field($data['your-message']),
            );
            break;
        default:
            return;
    }

    $args = array(
        'body' => json_encode($api_data),
        'headers' => array(
            'Content-Type' => 'application/json',
            'Authorization' => 'Bearer your_api_token'
        ),
        'timeout' => 15
    );

    $response = wp_remote_post($url, $args);

    if (is_wp_error($response)) {
        error_log('CF7 API error: ' . $response->get_error_message());
    } else {
        $code = wp_remote_retrieve_response_code($response);
        if ($code < 200 || $code >= 300) {
            error_log('CF7 API HTTP code: ' . $code);
        }
    }
}

Такой подход позволит централизованно управлять отправкой данных из разных форм и интеграциями.

Плагины для расширения возможностей Contact Form 7 и интеграции с API

Если вы не хотите писать код самостоятельно, обратите внимание на плагины, которые облегчают интеграцию Contact Form 7 с внешними сервисами через REST API:

  • Contact Form 7 Webhook — позволяет настроить отправку данных на любой URL по Webhook с гибкими параметрами;
  • Clearfy Pro — многофункциональный плагин для оптимизации и безопасности WordPress, в том числе удобен для настройки интеграций;
  • Плагины для интеграции с популярными CRM и маркетинговыми сервисами, многие из которых поддерживают REST API;

Выводы

Отправка данных Contact Form 7 на внешний сервер через REST API — мощный инструмент для автоматизации и расширения функциональности сайта. Используя хук wpcf7_mail_sent и функцию wp_remote_post, можно быстро настроить передачу данных на любые API с учётом требований безопасности и валидации.

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Contact Form 7: как добавить поля для вызова телефонных звонков в форму
14.02.2026
Contact Form 7: решение проблем с отправкой писем через SMTP в WordPress
23.11.2025
Contact Form 7: Автозаполнение поля телефона с маской ввода в WordPress
12.12.2025
Contact Form 7: создание динамических калькуляторов с помощью JavaScript
30.12.2025
Contact Form 7 и полифил для старого браузера: как обеспечить работу форм в Internet Explorer
29.11.2025
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее