1

我有一个内置在 Elementor 中的表单,我希望拦截、处理数据并转发给第三方,然后在“确认”卡上显示数据。

我能够将整个过程构建为一个页面,将每个页面设置为使用 CSS 不显示,然后在收到 AJAX 响应时使用 JS 显示/隐藏。这并不理想,因为它会在 JS 关闭时中断。

我一直无法找到正确的 Elementor 钩子和使用 PHP 填充新页面的方法,有没有人有这方面的经验?

4

1 回答 1

1

有几种方法可以将数据从 Elementor 网络表单发布到另一个 url。

一种是使用许多 API 集成,例如 Mailchimp、ActiveCampaign、Zapier 等(请参阅https://docs.elementor.com/article/281-form-faq)和(https://docs.elementor.com/category /405-集成

另一种(非常有限的方法)是在提交后使用表单的操作并选择“重定向”,然后使用每个字段的短代码作为 url 中的单独数据字符串,例如:

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

您甚至可以在 Elementor 中构建您的 /thank-you/ 页面以获取该数据并使用表单字段数据填充 Elementor 元素,例如文本、标题、链接等。例如,我可以在 /thank-you/ 页面上放置一个文本元素并选择动态而不是在文本区域中输入,然后从动态下拉列表中选择“请求参数”,对于“类型”选择 GET,对于参数名称使用您唯一的 url 键,例如 fname、lname 等。您甚至可以设置前缀、后缀甚至后备文本。

最后,这是一篇关于如何后端代码在外部传递数据的文章(https://developers.elementor.com/forms-api/#Form_New_Record_Action)。

// 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 );

还有一个带有更多示例的线程,使用该模板作为入门(https://github.com/elementor/elementor/issues/2397)与不同的 API 集成

于 2019-03-30T01:34:43.393 回答