การส่งข้อมูลจาก Elementor Pro Form ไปยัง LINE Notify 2023

บทความนี้ เราจะดูวิธีใช้ Elementor Pro Form และ Line Notify API เพื่อส่งข้อมูลในแบบฟอร์มไปยัง Line ของเราครับ การส่ง ข้อมูลผ่าน Line notify ทำให้เราสามารถดูข้อมูลได้อย่างรวดเร็ว โดยไม่ต้องเข้าหลังบ้านเว็บไซต์ เมื่อมีผู้ใช้เว็บไซต์กรอกฟอร์มสำเร็จ เป็นวิธีที่มีประโยชน์สำหรับการแจ้งสมาชิกในทีมหรือลูกค้าทำให้การสื่อสารเป็นไปได้อย่างรวดเร็ว

ใช้ wp_remote_post

ขั้นแรก เรากำหนดฟังก์ชัน send_line_notify ซึ่งรับ form_name และ field data เป็นข้อมูลแบบฟอร์ม จากนั้นใช้ฟังก์ชัน wp_remote_post เพื่อส่งคำขอ POST ไปยัง Line Notify API โดยมีข้อมูลในแบบฟอร์มเป็นข้อความ โค้ดนี้ยังมีฟังก์ชัน line_notify_webhook ที่ทริกเกอร์โดยใช้แอ็คชัน hook ของ elementor_pro/forms/new_record เมื่อสร้างเรกคอร์ดฟอร์มใหม่ โดยจะแยกชื่อฟอร์มและข้อมูลฟิลด์ออกจากเรกคอร์ด และส่งไปยังฟังก์ชัน send_line_notify

นำโค้ดนี้ไปใส่ใน functions.php ของธีม

<?php

// Function to send a message to Line Notify API
function send_line_notify($form_name, $raw_fields) {
    // Your Line Notify access token
    $access_token = "YOUR_ACCESS_TOKEN";

    // Prepare the message
    $text = $form_name."\n"."\n";
    foreach ( $raw_fields as $id => $field ) {
        if(!empty($field['value'])){
            $text .= $field['title']." : ".$field['value']."\n";
        }
    }

    // API endpoint
    $url = "https://notify-api.line.me/api/notify";

    // Send a POST request to the Line Notify API
    $response = wp_remote_post( $url, [
        'method' => 'POST',
        'timeout' => 45,
        'redirection' => 5,
        'httpversion' => '1.0',
        'blocking' => true,
        'headers' => [
            'Content-Type' => 'application/x-www-form-urlencoded',
            'Authorization' => 'Bearer '.$access_token
        ],
        'body' => ['message' => $text],
        'cookies' => []
    ] );
}

// Function to handle new form record
function line_notify_webhook( $record, $handler ) {
    // Elementor Pro Form data
    $form_name = $record->get_form_settings( 'form_name' );
    $raw_fields = $record->get( 'fields' );

    // Send the message to Line Notify API
    send_line_notify($form_name, $raw_fields);
}

// Hook to trigger function when a new form record is created
add_action( 'elementor_pro/forms/new_record', 'line_notify_webhook', 20, 2 );

Leave a Reply

Your email address will not be published. Required fields are marked *