↗️ Bagikan

Mengirim data bricks form yang di-submit langsung ke beberapa URL webhook

Halo, para pengembang WordPress! Pernahkah Anda berpikir, “Bagaimana caranya mengirim data form yang di-submit langsung ke beberapa URL webhook tanpa ribet?” Nah, kali ini kita akan membahas bagaimana Anda bisa melakukan itu dengan menggunakan Bricks Builder. Tidak hanya informatif, artikel ini juga akan diselingi dengan sedikit humor. Siapkan kopi dan mari kita mulai! ☕

Apa yang Akan Kita Lakukan?

Kita akan membuat fungsi PHP yang mengambil data dari form Bricks Builder dan mengirimkannya ke beberapa URL webhook. Fungsinya simpel, namun sangat powerful! Jika semua webhook berhasil menerima data, kita akan memberikan pesan sukses kepada pengguna. Jika ada yang gagal, ya… setidaknya kita memberi tahu mereka bahwa sesuatu tidak beres.

Mari Kita Mulai dengan Kodenya!

function bung_bricks_form_to_webhook( $form ){

$data = $form->get_fields();
$formId = $data['formId'];

$webhook_urls = array(
'ummpxt' => array(
'https://hook.us1.make.com/bxwdigckytrn5dspykzw52kttvd1up3v',
'https://app.instanwa.id/webhook/whatsapp-workflow/48682.26311.41212.171778170',
),
//'zkyusz' => array('https://hook.us1.make.com/0uckqyc8wp3bu7kcd45h4i1fmxib7y0'),
);

if( isset( $webhook_urls[$formId] ) ){
$errors = array();

foreach( $webhook_urls[$formId] as $webhook_url ){
$curl = curl_init($webhook_url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json'
));
$result = curl_exec($curl);

if( $result === false ){
$errors[] = 'Webhook failed for URL: ' . $webhook_url;
} else {
$response_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if( $response_code != 200 ){
$errors[] = 'Webhook responded with an error for URL: ' . $webhook_url;
}
}

curl_close($curl);
}

if( !empty($errors) ){
$form->set_result([
'action' => 'my_custom_action',
'type' => 'danger', //or danger or info
'message' => esc_html__('Some webhooks failed: ' . implode(', ', $errors), 'bricks'),
]);
} else {
$form->set_result([
'action' => 'my_custom_action',
'type' => 'success',
'message' => esc_html__('All webhooks succeeded', 'bricks'),
]);
}
}
}

add_action( 'bricks/form/custom_action', 'bung_bricks_form_to_webhook', 10, 1 );

Berikut adalah kode yang akan kita bahas. Anda juga bisa menemukan kode lengkapnya di GitHub: [Klik di sini untuk melihat kodenya].

4. Memberikan Feedback ke Pengguna
Jika semua webhook berhasil, kita memberikan pesan sukses. Jika ada yang gagal, kita memberikan pesan error.

if( !empty($errors) ){
$form->set_result([
'action' => 'my_custom_action',
'type' => 'danger',
'message' => esc_html__('Some webhooks failed: ' . implode(', ', $errors), 'bricks'),
]);
} else {
$form->set_result([
'action' => 'my_custom_action',
'type' => 'success',
'message' => esc_html__('All webhooks succeeded', 'bricks'),
]);
}

Apa yang Terjadi di Balik Layar?

1. Mengambil Data Form
Kita mengambil semua field dari form yang di-submit dan ID form tersebut. ID ini penting karena akan digunakan untuk menentukan ke mana data tersebut harus dikirim.

$data = $form->get_fields();
$formId = $data['formId'];

2. Daftar URL Webhook
Kita membuat daftar URL webhook berdasarkan ID form. Jika form dengan ID tertentu di-submit, data akan dikirim ke URL-URL yang terdaftar.

$webhook_urls = array(
'ummpxt' => array(
'https://hook.us1.make.com/bxwdigckytrn5dspykzw52kttvd1up3v',
'https://app.instanwa.id/webhook/whatsapp-workflow/48682.26311.41212.171778170',
),
);

3. Mengirim Data ke Webhook
Dengan bantuan `curl`, kita mengirim data ke setiap URL webhook yang sesuai dengan ID form. Jika ada yang gagal, kita menyimpan pesan error.

foreach( $webhook_urls[$formId] as $webhook_url ){
$curl = curl_init($webhook_url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json'
));
$result = curl_exec($curl);

if( $result === false ){
$errors[] = 'Webhook failed for URL: ' . $webhook_url;
} else {
$response_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if( $response_code != 200 ){
$errors[] = 'Webhook responded with an error for URL: ' . $webhook_url;
}
}

curl_close($curl);
}

Bergabunglah dengan Komunitas Bricks Builder Indonesia!

Punya pertanyaan atau ingin berbagi pengalaman seputar Bricks Builder? Yuk, bergabung dengan komunitas Bricks Builder Indonesia di Telegram! Di sana, kita bisa saling berbagi tips, trik, dan solusi atas berbagai masalah yang dihadapi.

👉 [Gabung di grup Telegram Bricks Builder Indonesia]

Semoga artikel ini bermanfaat dan membuat hari Anda lebih menyenangkan. Selamat mencoba dan jangan lupa untuk bergabung dengan komunitas kita! 🚀