elementor action after form submit . webhook example

雖然 elementor 有很豐富的表單發送後的處理動作,針對特別情況,例如我們希望把表單資料轉存至自家的 CRM 保存,但你家的 CRM 又有奇怪的規格,又或者需要驗證token,這時就要自訂義表單發送後的處理動作了,以下官方文件中自訂義表單發送後的動作

範例:

post json format

/**
 * elementor 自定義表單發送
 * elementor action after form submit . webhook example
 * @see https://v123.tw/elementor-action-after-form-submit 
 * @see https://developers.elementor.com/forms-api/
 */
add_action( 'elementor_pro/forms/new_record', function( $record, $ajax_handler ) {

    // 這段程式要給哪個表單使用
    $form_name = $record->get_form_settings( 'form_name' );
    if ( 'contact_us' !== $form_name ) {
        return;
    }

	// 取得所有欄位,看你要幹嘛
    $raw_fields = $record->get( 'fields' );
    $fields = [];
    foreach ( $raw_fields as $id => $field ) {
        $fields[ $id ] = $field['value'];
    }

	// 設置一欄為webhook_url,便可在elementor上修改
	$webhook_url = $fields['webhook_url'];

	// Post Form (json format)
	// https://wordpress.stackexchange.com/a/313036/116304
    $response_data = wp_remote_post( $webhook_url, [
		'headers' => ['Content-Type' => 'application/json; charset=utf-8'],
		'body' => json_encode($fields)
    ]);

	// 測試用,要在 debug console 看
	// 目前還沒找到自訂錯誤訊息方法
	// $ajax_handler->add_error( 'Form Custom Error:', 'Invalid Ticket ID, it must be in the format XXX-XXXX' );
	// print_r($response_data);
	// exit;

},10,2);

官方文檔:
https://developers.elementor.com/forms-api/#Form_New_Record_Action

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料