Contact Form 7: отправка данных через REST API WordPress

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

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

REST API позволяет отделить фронтенд и бэкенд, создавать более гибкие архитектуры и взаимодействовать с формами программно. Использование REST API в связке с Contact Form 7 открывает новые возможности для разработчиков, например, отправлять данные в собственные обработчики, интегрировать с CRM, сервисами аналитики и т.д.

В этой статье я покажу, как настроить Contact Form 7 для отправки данных через REST API WordPress, как создать собственный эндпоинт и обработать отправленные данные.

Создание кастомного REST API эндпоинта в WordPress для Contact Form 7

Первым шагом создадим собственный REST API маршрут, который будет принимать данные из формы Contact Form 7. Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:

add_action('rest_api_init', function () {
    register_rest_route('contactform7/v1', '/submit', array(
        'methods' => 'POST',
        'callback' => 'contactform7_handle_form_submission',
        'permission_callback' => '__return_true',
    ));
});

function contactform7_handle_form_submission(WP_REST_Request $request) {
    $params = $request->get_json_params();

    // Пример валидации
    if (empty($params['your-name']) || empty($params['your-email'])) {
        return new WP_REST_Response(['error' => 'Поля имя и email обязательны'], 422);
    }

    // Можно добавить логику обработки формы или сохранить данные
    // Например, отправка письма
    $to = get_option('admin_email');
    $subject = 'Новая заявка с формы Contact Form 7';
    $message = "Имя: " . sanitize_text_field($params['your-name']) . "\n";
    $message .= "Email: " . sanitize_email($params['your-email']) . "\n";
    if (!empty($params['your-message'])) {
        $message .= "Сообщение: " . sanitize_textarea_field($params['your-message']) . "\n";
    }

    wp_mail($to, $subject, $message);

    return new WP_REST_Response(['success' => true], 200);
}

Этот код регистрирует REST маршрут /wp-json/contactform7/v1/submit, который принимает POST-запрос с JSON телом. В обработчике происходит базовая валидация и отправка письма.

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

Теперь настроим форму Contact Form 7 так, чтобы при отправке данные отправлялись на наш REST API. Для этого используем JavaScript и событие отправки формы.

Добавьте следующий скрипт в подвал темы или в отдельный JS-файл, подключаемый на странице с формой:

document.addEventListener('DOMContentLoaded', function() {
    const form = document.querySelector('.wpcf7 form');
    if (!form) return;

    form.addEventListener('submit', function(e) {
        e.preventDefault();

        const formData = new FormData(form);
        const data = {};
        formData.forEach((value, key) => { data[key] = value; });

        fetch('/wp-json/contactform7/v1/submit', {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify(data)
        })
        .then(response => response.json())
        .then(json => {
            if (json.success) {
                alert('Данные успешно отправлены через REST API');
                form.reset();
            } else if (json.error) {
                alert('Ошибка: ' + json.error);
            } else {
                alert('Неизвестная ошибка');
            }
        })
        .catch(error => {
            alert('Ошибка при отправке: ' + error.message);
        });
    });
});

Этот скрипт перехватывает стандартную отправку формы Contact Form 7, собирает данные и отправляет их на наш кастомный REST API. После успешной отправки выводится сообщение и форма очищается.

Обработка файлов и расширенная валидация

Если в форме есть поля для загрузки файлов, отправка через JSON усложняется, так как файлы нельзя передать в JSON напрямую. В таких случаях стоит использовать FormData и отправлять данные как multipart/form-data.

Пример изменения JS для отправки с файлами:

form.addEventListener('submit', function(e) {
    e.preventDefault();

    const formData = new FormData(form);

    fetch('/wp-json/contactform7/v1/submit', {
        method: 'POST',
        body: formData
    })
    .then(response => response.json())
    .then(json => {
        if (json.success) {
            alert('Данные успешно отправлены');
            form.reset();
        } else if (json.error) {
            alert('Ошибка: ' + json.error);
        } else {
            alert('Неизвестная ошибка');
        }
    })
    .catch(error => {
        alert('Ошибка при отправке: ' + error.message);
    });
});

В PHP-обработчике можно получить файлы через $_FILES и обработать их стандартными средствами WordPress.

Полезные плагины для расширения Contact Form 7 с REST API

Для упрощения интеграции и расширения возможностей Contact Form 7 можно использовать дополнительные плагины:

  • WPGPT — интеграция AI для умной обработки сообщений, автоответов и анализа данных.
  • Clearfy Pro — оптимизация безопасности и производительности, помогает защитить REST API.
  • My Popup — создание всплывающих окон для подтверждения отправки форм и уведомлений.

Эти плагины помогают сделать работу с Contact Form 7 и REST API более удобной и безопасной.

Заключение: преимущества и важные моменты

Отправка данных Contact Form 7 через REST API дает гибкость для интеграции с внешними сервисами и собственными решениями. Важно уделять внимание безопасности: использовать nonce, проверять права доступа и валидировать данные.

Также стоит учитывать, что такая реализация требует базовых знаний JavaScript и WordPress REST API, но существенно расширяет возможности стандартного функционала Contact Form 7.

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

⭐⭐⭐⭐⭐
Contact Form 7: авторизация по телефону с подтверждением OTP
26.03.2026
Contact Form 7: как создать многоязычную форму в WordPress
20.03.2026
Contact Form 7: как добавить проверку OTP (одноразовый пароль) для подтверждения формы
23.02.2026
Contact Form 7: как добавить поля динамического выбора в форму
26.02.2026
Contact Form 7: Автозаполнение полей формы по IP-адресу пользователя
20.02.2026
×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙