Форма перехвата WP / Elementor и перенаправление с данными

У меня есть форма, встроенная в Elementor, которую я хочу перехватить, обработать данные и передать третьему лицу, а затем показать данные на "подтверждающей" карте.

Я могу построить весь этот процесс как одну страницу, выставив каждый из них как не отображаемый с помощью CSS, затем показывая / скрывая с помощью JS, когда я получаю ответы AJAX. Это не идеально, так как ломается с выключенным JS.

Я не смог найти подходящего элемента Elementor и способа наполнения новой страницы PHP, кто-нибудь имел опыт с этим?

0 ответов

Существует несколько способов отправить данные на другой URL из веб-формы Elementor.

Одним из них является использование многих интеграций API, таких как Mailchimp, ActiveCampaign, Zapier и т. Д. (См. https://docs.elementor.com/article/281-form-faq) и ( https://docs.elementor.com/category/405-integrations)

Другой (очень ограниченный метод) - использование действия формы после отправки и выбор "перенаправления", а затем использование краткого кода каждого поля в качестве отдельных строк данных в URL-адресе, таких как:

mysite.com/thank-you?fname=[field id = "fname"] & lname = [field id = "lname"]

Вы даже можете создать свою страницу / благодарности / в Elementor, чтобы ПОЛУЧИТЬ эти данные и заполнить элементы Elementor, такие как текст, заголовок, ссылки и т. Д., Данными поля формы. Например, я мог бы добавить текстовый элемент на страницу /thank-you/ и выбрать динамический вместо того, чтобы вводить текстовую область, а из динамического выпадающего меню выбрать "параметр запроса", а для "типа" выбрать GET и для имя параметра использует ваши уникальные ключи URL, такие как fname, lname и т. д. Вы можете даже установить префикс, суффикс и даже резервный текст вместе с ним.

Наконец, здесь приведена информация о том, как выполнить внутренний код для передачи данных извне ( https://developers.elementor.com/forms-api/).

// A send custom WebHook
add_action( 'elementor_pro/forms/new_record', function( $record, $handler ) {
    //make sure its our form
    $form_name = $record->get_form_settings( 'form_name' );

    // Replace MY_FORM_NAME with the name you gave your form
    if ( 'MY_FORM_NAME' !== $form_name ) {
        return;
    }

    $raw_fields = $record->get( 'fields' );
    $fields = [];
    foreach ( $raw_fields as $id => $field ) {
        $fields[ $id ] = $field['value'];
    }

    // Replace HTTP://YOUR_WEBHOOK_URL with the actuall URL you want to post the form to
    wp_remote_post( 'HTTP://YOUR_WEBHOOK_URL', [
        'body' => $fields,
    ]);
}, 10, 2 );

И поток с множеством примеров интеграции с различными API-интерфейсами с использованием этого шаблона в качестве учебного пособия ( https://github.com/elementor/elementor/issues/2397).

Другие вопросы по тегам