Tích hợp đơn hàng WooCommerce sang Google Sheets
Mặc định WooCommerce sau khi đặt hàng thành công đơn hàng sẽ được lưu lại trong trang quản trị và gửi email thông báo cho quản trị viên, khách hàng. Tuy nhiên, bạn muốn đơn hàng này được tự động lưu lại trong Google Sheets để tiện việc theo dõi.
Theo như tôi được biết, hiện nay đã có rất nhiều plugin miễn phí, trả phí giúp bạn làm điều này. Trong bài viết này, tôi xin phép chia sẻ cách làm rất đơn giản qua hook woocommerce_thankyou
của WooCommerce.
Trước khi bắt đầu, bạn cần xác định những thông tin cần tích hợp qua Google Sheets. Ở trong bài viết này tôi sẽ tích hợp những thông tin sau:
- Họ và tên khách hàng
- Email khách hàng
- Số điện thoại
- Địa chỉ khách hàng
- Tổng giá trị đơn hàng
- Chi tiết đơn hàng: Tên sản phẩm – Số lượng
- Trạng thái đơn hàng
Bước 01: Tạo Google Forms và liên kết với Google Sheets
Bạn hãy truy cập vào Google Drive để tạo Google Forms.
Tạo form bao gồm các trường mà bạn cần tích hợp từ WooCommerce qua Google Sheets.
Lưu ý:
- Kiểu trường đều đặt là: Văn bản câu trả lời ngắn
- Tất cả các trường đều đặt là không bắt buộc
Tiếp theo, bạn chuyển qua tab “Câu trả lời” để tích hợp các câu trả lời với Google Sheets.
Lưu ý: Nếu bạn đã có file Google Sheets trên Google Drive, bạn hãy chọn bảng tính hiện có. Còn không hãy tạo mới
Cuối cùng, hãy bấm vào nút “Xem trước” (Hình con mắt) để lấy link của Form.
Bước 02: Code tích hợp WooCommerce qua Google Sheets
Để làm được điều này, bạn cần phải có quyền sửa code file functions.php
trong theme bạn đang sử dụng.
Bạn chèn đoạn code sau vào file functions.php
trong theme mà bạn đang sử dụng:
add_action( 'woocommerce_thankyou', 'pvs_send_order_to_google_sheets' ); function pvs_send_order_to_google_sheets( $order_id ){ $order = wc_get_order( $order_id ); $order_data = $order->get_data(); $order_status = $order_data['status']; $order_total = $order_data['cart_tax']; $order_billing_first_name = $order_data['billing']['first_name']; $order_billing_last_name = $order_data['billing']['last_name']; $order_billing_address_1 = $order_data['billing']['address_1']; $order_billing_email = $order_data['billing']['email']; $order_billing_phone = $order_data['billing']['phone']; $product_detail = ''; foreach ($order->get_items() as $item_key => $item ): $item_data = $item->get_data(); $product_name = $item_data['name']; $quantity = $item_data['quantity']; $line_total = $item_data['total']; $product_detail.=$product_name."(SL: ".$quantity.", Thành tiền: ".$line_total.")\n"; endforeach; $fields = array( 'entry.359835661'=>urlencode($order_billing_first_name.' '.$order_billing_last_name), 'entry.359835662'=>urlencode($order_billing_email), 'entry.359835663'=>urlencode($order_billing_phone), 'entry.359835664'=>urlencode($order_billing_address_1), 'entry.359835665'=>urlencode($order_total), 'entry.359835666'=>urlencode($product_detail), 'entry.359835667'=>urlencode($order_status) ) ); foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } rtrim($fields_string, '&'); header('Content-type: text/html; charset=UTF-8'); $ch = curl_init(); curl_setopt($ch, CURLOPT_ENCODING ,"UTF-8"); $url=utf8_encode('https://docs.google.com/forms/d/e/1FAIpQLScZ3lHLjJ-fkre90TcUQUsiUUL0lP5El0clkDKKoHQQ7iaZlA/formResponse'); //set the url, number of POST vars, POST data curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POST, count($fields)); curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); curl_setopt($ch,CURLOPT_HEADER, 1); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); //execute post $result = curl_exec($ch); //close connection curl_close($ch); }
Thay entry.359835661
thành field name trên Google Forms của bạn
Để lấy được field name này bạn vui lòng mở Google Form mà lúc xem trước ở bước trên, bấm chuột phải vào trường cần lấy và chọn Inspect, sau đó tìm đến thuộc tính name=””
$url
: Link Google Form sau khi đã submit
Để lấy được link này, bạn chỉ cần vào link xem trước, sau đó bấm nút “Gửi” và bạn hãy copy link trên trình duyệt.
Sau khi hoàn thiện các bước trên, bạn hãy đặt hàng thử trên website WooCommerce của bạn để xem kết quả.
Kết luận
Trên đây là chút kinh nghiệm của tôi về việc tích hợp đơn hàng WooCommerce qua Google Sheets. Tôi chỉ lấy ví dụ đơn giản, bạn có thể lấy các thông tin phức tạp hơn trên đơn hàng WooCommerce bằng cách dùng hàm wc_get_order()
Nếu có bất kỳ câu hỏi nào, hãy comment phía dưới bài viết này.
không hoạt động bạn
Cụ thể là lỗi gì bạn nhỉ? Bạn mô tả kỹ hơn để mình support nhé
em chat trên facebook nha Anh
Chào bạn. Mình tích hợp không được.
Cụ thể là lỗi gì bạn nhỉ? Bạn mô tả kỹ hơn để mình support nhé
Mình không lấy đường Field Name dạng số, nó chỉ có “jsname= VPqjbf”, làm sao để ra dạng name=entry.12345667
Chào bạn,
Vấn đề này Google Forms đã update. Mình sẽ update lại bài viết với cách khác nhé.
Cảm ơn bạn.