Tích hợp đơn hàng WooCommerce sang Google Sheets

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.

[Total: 2   Average: 5/5]

Hoàng An

Tôi không phải là 1 chuyên gia lập trình, cũng không phải là 1 chuyên gia SEO. Với niềm đam mê với CNTT, tôi có thể biến ý tưởng thành sản phẩm và thích chia sẻ kiến thức cho người khác. Nếu có duyên, mời bạn đến với khoá học của tôi

7 bình luận trong “Tích hợp đơn hàng WooCommerce sang Google Sheets

  1. 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

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *