[Học Woocommerce] Thêm nhiều phương thức giao nhận tỷ lệ sàn

10 Tháng Mười Một, 2015

Bài này thuộc phần 13 của 38 phần trong serie Học Woocommerce

Trước đó mình đã có hướng dẫn bạn cách sử dụng phương thức tỷ lệ sàn trong Woocommerce mà bạn đã có thể hiểu nó như một đơn vị đại diện cho một phương thức giao nhận thông thường. Chẳng hạn bây giờ bạn muốn tạo ra nhiều kiểu giao nhận khác nhau như Chuyển phát chậm, Chuyển phát thường và Chuyển phát nhanh thì sao? Dĩ nhiên mặc định trong Woocommerce không cho phép bạn làm điều đó vì tính chất của 3 kiểu chuyển phát trên đều là tỷ lệ sàn.

Ở các phiên bản Woocommerce cũ hơn, chúng ta có thể làm việc này nhờ vào việc sử dụng tính năng Additional Rate khi sử dụng tỷ lệ sàn nhưng rất tiếc từ Woocommerce 2.4 thì chức năng này đã bị ẩn đi. Nghĩa là chúng ta có thể sử dụng nó nhưng phải thông qua việc thêm code vào website.

Tắt bộ nhớ đệm cho thiết lập giao nhận

Trước khi làm bài này, bạn nên tắt chức năng lưu bộ nhớ đệm của thiết lập giao nhận trong Woocommerce để cho bạn có thể thấy sự thay đổi ngay lập tức. Bạn có thể tắt tại phần Woocommerce -> Tình trạng hệ thống -> Công cụ -> đánh dấu vào mục Chế độ Sửa lỗi phương thức giao hàng.

Thêm nhiều phương thức tỷ lệ sàn

Nếu bạn muốn thêm nhiều tỷ lệ sàn khác nhau vào website thì hãy thêm đoạn code sau vào tập tin functions.php của theme hoặc child theme mà bạn đang sử dụng:

 /*  * Ví dụ thêm phương thức chuyển phát nhanh  */  add_action( 'woocommerce_flat_rate_shipping_add_rate', 'tp_add_chuyenphatnhanh', 10, 2 ); function tp_add_chuyenphatnhanh( $method, $rate ) { $new_rate = $rate; $new_rate['id'] .= ':' . 'chuyenphatnhanh';  } 

Trong code mình đã có comment rồi đó, lưu ý phần $new_rate['cost'] += 10000 bạn sẽ thấy có thêm dấu + trước dấu =. Điều này nghĩa là nó sẽ cộng thêm 10.000 đồng vào so với giá mà bạn đã thiết lập trong phần tỷ lệ sàn. Nếu bạn không muốn nó cộng thêm mà thiết lập giá cố định thì xóa dấu + đó đi để thành $new_rate['cost'] = 10000.

Và nếu bạn muốn thêm nhiều phương thức khác nhau, hãy copy lại đoạn code đó nhưng thay đổi tên hàmtp_add_chuyenphatnhanh và IDchuyenphatnhanh giống thế này.

 /*  * Ví dụ thêm phương thức chuyển phát nhanh  */  add_action( 'woocommerce_flat_rate_shipping_add_rate', 'tp_add_chuyenphatnhanh', 10, 2 ); function tp_add_chuyenphatnhanh( $method, $rate ) { $new_rate = $rate; $new_rate['id'] .= ':' . 'chuyenphatnhanh';  } /*  * Ví dụ thêm phương thức chuyển chậm  */  add_action( 'woocommerce_flat_rate_shipping_add_rate', 'tp_add_chuyenphatcham', 10, 2 ); function tp_add_chuyenphatcham( $method, $rate ) { $new_rate = $rate; $new_rate['id'] .= ':' . 'chuyenphatcham';  } 

Bây giờ ta xem kết quả nhé.

woocommerce-shipping-08

Như vậy là đúng ý bạn rồi phải không nào? Và còn gì nữa nhỉ? À, còn cái vụ loại hình giao nhận (Shipping Class) nữa chứ, ở bài sau chúng ta sẽ tìm hiểu về cái này và bạn sẽ thấy được sức mạnh của nó là như thế nào, đặc biệt là ứng dụng trong việc tính giá giao nhận dựa theo tỉnh thành.