Tối ưu quy trình quản lý đơn hàng: Đồng bộ WooCommerce và Contact Form 7 về Google Sheets không cần Plugin
Việc quản lý đơn hàng từ WooCommerce và dữ liệu từ Contact Form 7 (CF7) trực tiếp trên Google Sheets giúp doanh nghiệp tiết kiệm thời gian, dễ dàng thống kê và theo dõi dữ liệu tập trung. Thay vì sử dụng các plugin trung gian gây nặng hệ thống, giải pháp tối ưu nhất là sử dụng cURL để đẩy dữ liệu trực tiếp từ WordPress lên Google Forms, từ đó tự động lưu vào bảng tính.
Quy trình này bao gồm 3 giai đoạn chính:
- Thiết lập Google Forms: Tạo đích đến để tiếp nhận dữ liệu.
- Tích hợp cURL: Viết hàm PHP để đẩy dữ liệu từ website lên Forms.
- Tự động hóa: Sử dụng Google Apps Script để thông báo và gửi email phản hồi cho khách hàng.
Bước 1: Thiết lập Google Forms và lấy Entry ID
Bạn cần tạo một Google Form với các trường dữ liệu tương ứng với thông tin đơn hàng (ID, Họ tên, SĐT, Địa chỉ, Email, Tên sản phẩm, Ghi chú, Phương thức thanh toán).
- Tạo Form, chọn kiểu câu hỏi là "Trả lời ngắn".
- Nhấn vào biểu tượng "Xem trước" (hình con mắt).
- Nhấn F12 (Inspect) trên trình duyệt, sử dụng tổ hợp phím Ctrl + F tìm từ khóa
entry.để lấy các ID tương ứng cho từng trường dữ liệu. - Gửi thử một phản hồi để tạo file Google Sheets liên kết.
Bước 2: Cấu hình đẩy dữ liệu từ WooCommerce
Thêm đoạn mã sau vào file functions.php của theme đang sử dụng. Hãy thay thế các ID entry.xxxx và đường dẫn URL form của bạn vào code:
add_action( 'woocommerce_thankyou', 'sw_send_order_to_google_sheets' );
function sw_send_order_to_google_sheets( $order_id ){
$order = wc_get_order( $order_id );
$order_data = $order->get_data();
// Lấy dữ liệu đơn hàng
$fields = array(
'entry.1616357596' => urlencode($order_id),
'entry.1963903769' => urlencode($order_data['billing']['first_name'].' '.$order_data['billing']['last_name']),
'entry.1218870691' => urlencode($order_data['billing']['email']),
'entry.1381634202' => urlencode($order_data['billing']['phone']),
// Tiếp tục map các trường còn lại
);
$fields_string = '';
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://docs.google.com/forms/u/0/d/e/YOUR_FORM_ID/formResponse');
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);
}
Bước 3: Tích hợp với Contact Form 7
Đối với CF7, bạn thực hiện tương tự nhưng sử dụng hook wpcf7_before_send_mail để bắt dữ liệu ngay khi khách hàng nhấn gửi form:
add_action( 'wpcf7_before_send_mail', 'sw_wpcf7_to_google_sheets', 10, 3 );
function sw_wpcf7_to_google_sheets( $contact_form, $abort, $submission ){
$sdt = $submission->get_posted_data( 'sdt' );
$email = $submission->get_posted_data( 'your-email' );
$fields = array(
'entry.605284294' => urlencode($sdt),
'entry.1934486941' => urlencode($email),
);
// Thực hiện cURL tương tự như trên
}
Bước 4: Tự động hóa gửi Email qua Google Apps Script
Trong Google Sheets, chọn Tiện ích mở rộng > Apps Script và dán đoạn mã xử lý sự kiện onFormSubmit để tự động gửi email xác nhận cho khách hàng khi có dữ liệu mới đổ về.
function guiEmail (e) {
var s = SpreadsheetApp.getActiveSheet();
if (s.getName() == 'Đơn hàng') {
var email = e.values[5]; // Vị trí cột email trong Sheet
MailApp.sendEmail({
to: email,
subject: 'Xác nhận đơn hàng',
htmlBody: 'Cảm ơn bạn đã đặt hàng tại hệ thống của chúng tôi.'
});
}
}
Cuối cùng, hãy thiết lập Trình kích hoạt (Trigger) trong Apps Script để hàm này chạy tự động mỗi khi có phản hồi mới từ biểu mẫu.
Giải pháp này giúp tối ưu hóa tài nguyên server bằng cách loại bỏ các plugin nặng nề. Nếu bạn cần tư vấn giải pháp tùy chỉnh chuyên sâu hơn cho hệ thống quản trị của STAR WAR Digital Solutions, hãy liên hệ với đội ngũ kỹ thuật của chúng tôi để được hỗ trợ.