Как можно отправить данные формы Contact Form 7 в другой файл после ее отправки?

Как правильно вызвать внешний PHP-скрипт в конце функции, обрабатывающей данные из формы CF7, чтобы передать в него полученные переменные? У меня уже есть рабочий скрипт интеграции с CRM в отдельной папке, и мне нужно передать в него данные без вставки всего скрипта внутрь функции. Я пробовал использовать `include` и `get_template_part`, но это не сработало. Могу ли я сделать это с помощью хука, и как именно?
  • 14 сентября 2024 г. 9:33
Ответы на вопрос 2
Да, вы можете использовать хуки в Contact Form 7 для отправки данных после отправки формы и затем передавать эти данные в ваш внешний PHP-скрипт. В особенности вам понадобится использовать хук `wpcf7_mail_sent`, который срабатывает после успешной отправки формы.

Вот пример того, как это сделать:

1. Создайте файл `my-custom-script.php`, который находится в вашей папке с темой или плагине. Это будет ваш PHP-скрипт, который будет обрабатывать данные.

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

```php
add_action('wpcf7_mail_sent', 'send_data_to_external_script');

function send_data_to_external_script($contact_form) {
    // Получаем данные отправленной формы
    $submission = WPCF7_Submission::get_instance();
    if ($submission) {
        $data = $submission->get_posted_data();

        // Подготовьте данные для передачи
        $your_data = array(
            'name' => isset($data['your-name']) ? $data['your-name'] : '',
            'email' => isset($data['your-email']) ? $data['your-email'] : '',
            // добавьте другие поля, которые вам нужны
        );

        // Путь к вашему внешнему PHP-скрипту
        $url = get_template_directory() . '/path/to/your/my-custom-script.php';

        // Вызываем внешний PHP-скрипт
        if (file_exists($url)) {
            // передаем данные в скрипт
            include($url);
        }
    }
}
```

### Объяснение кода
- Хук `wpcf7_mail_sent` позволяет вам добавить собственную функцию, которая будет обрабатывать данные после отправки формы.
- В функции `send_data_to_external_script` мы получаем данные формы с помощью `WPCF7_Submission::get_instance()`.
- Мы собираем необходимые данные в массив `$your_data`.
- Затем указываем путь к вашему внешнему файлу и используем функцию `include` для его подключения.

### Внешний файл
Внешний PHP-скрипт `my-custom-script.php` должен уже иметь возможность обрабатывать переданные ему данные. Например, вы можете использовать массив `$your_data`, который был создан в функции:

```php
// my-custom-script.php
if (isset($your_data)) {
    // Делайте что-то с $your_data, например, отправьте данные в CRM
    // Пример:
    // отправка данных в CRM API
}
```

### Важно
- Убедитесь, что в вашем PHP-скрипте нет вывода данных (например, `echo`), если только это не требуется для обработки. В противном случае это может привести к неверному поведению, так как CF7 ожидает, что форма завершится без "вывода".
- Убедитесь, что в вашей форме есть соответствующие поля, имена которых совпадают с теми, которые вы используете в коде.

Таким образом, вы успешно передадите данные из Contact Form 7 в ваш внешний PHP-скрипт.
У гугла спрашивали? Мой запрос (Contact form 7 интеграция с CRM)
Похожие вопросы