Chuyên mục
Wordpress

Ẩn phương thức giao hàng của Woocommerce tuỳ điều kiện thiết lập

Mới đây, mình nhận được yêu cầu từ khách phải thiết lập chế độ Giao hàng miễn phí trên Woocommerce cho một chiến dịch khuyến mãi mới kéo dài 1 tuần. Sau đó, chế độ giao hàng miễn phí sẽ tự động tắt.

Thiết lập phương thức Giao hàng miễn phí trong Woocommerce quá dễ. Truy cập vào mục Khu vực giao hàng trong trang Cài đặt của Woocommerce, thêm phương thức giao hàng mới là xong.

Tuy nhiên do chiến dịch bắt đầu lúc 12:00 đêm và kết thúc cũng 12:00 đêm, mà mình lại không muốn thức khuya để chỉnh chọt website. Do đó, phải áp dụng cách để tự động hoá việc ẩn / hiện phương thức Giao Hàng Miễn Phí tuỳ theo điều kiện thời gian.

Ẩn giao hàng miễn phí ngoài thời gian khuyến mãi

Phương thức Giao hàng miễn phí sẽ được kích hoạt sẵn. Mình sẽ viết thêm vài dòng code để ẩn nó ra khỏi trang thanh toán khi nằm ngoài giai đoạn khuyến mãi.

Woocommerce cung cấp sẵn filter woocommerce_package_rates để tuỳ biến phương thức giao hàng. Mình sử dụng đoạn code sau để tự động tắt phương thức Giao hàng miễn phí ngoài khung giờ khuyến mãi.

add_filter( 'woocommerce_package_rates' , 'thuanbui_customize_shipping', 10, 2 );
function <meta charset="utf-8">thuanbui_customize_shipping( $rates, $package ) {
	if ( ! $rates )  return;
	
  	if (current_time('dmY') < '23092021' || current_time('dmY') > '30092021') {
             unset($rates['free_shipping:23']); // remove Free Shipping
    }
	
	return $rates;
}Code language: PHP (php)

Giải thích đôi chút:

  • if (current_time('dmY') < '23092021' || current_time('dmY') > '30092021') : kiểm tra xem ngày hiện tại có nằm trong khoảng thời gian khuyến mãi 23/09/2021 đến 30/09/2021 không
  • unset($rates['free_shipping:23'])nếu có, ẩn phương thức giao hàng `free_shipping:18`

Để tìm đúng id của phương thức giao hàng, kiểm tra bằng cách truy cập vào trang thanh toán, mở Inspect panel và tìm giá trị value của phương thức giao hàng cần thiết lập.

Ẩn giao hàng tốc hành Grab / Ahamove ngoài giờ làm việc

Shop YCB.vn của mình có áp dụng phương thức giao hàng tốc hành trong ngày bằng Grab / Ahamove cho các đơn hàng nội thành TP.HCM. Mình chỉ muốn phương thức này xuất hiện trên web trong giờ làm việc. Đổi code lại đôi chút như sau

add_filter( 'woocommerce_package_rates' , 'ycb_shipping', 10, 2 );
function <meta charset="utf-8">ycb_shipping( $rates, $package ) {
	if ( ! $rates )  return;
	
  	if (current_time('D') == 'Sun' || current_time('G') <'07' || current_time('G') >= '18') {
        unset($rates['flat_rate:29']); // remove Grab - Ahamove shping
    }
	
	return $rates;
}Code language: PHP (php)

Lệnh if (current_time('D') == 'Sun' || current_time('G') <'07' || current_time('G') >= '18') kiểm tra 2 điều kiện:

  • Hôm nay có phải chủ nhật không?
  • Thời gian hiện tại có phải nằm ngoài khung 7h – 18h không?

Nếu thoả một trong các điều kiện trên, ẩn phương thức giao hàng flat_rate:29 ra khỏi trang thanh toán.

Bạn có thể tuỳ biến dòng lệnh if tuỳ thuộc vào nhu cầu sử dụng của mình. Có thể kiểm tra điều kiện thông tin đơn hàng, cân nặng, danh mục sản phẩm,… để ẩn phương thức thanh toán tương ứng.

Nếu bài viết của mình mang đến thông tin, kiến thức hữu ích cho bạn, đừng ngại mời mình ly bia để có thêm động lực chia sẻ nhiều hơn nữa. Cám ơn bạn!

Lưu ý: Nếu bạn cần hỗ trợ kỹ thuật, vui lòng gửi câu hỏi trực tiếp ở phần Thảo luận bên dưới, mình sẽ trả lời sớm. Đừng mò vào hỏi trong fanpage Yêu Chạy Bộ, sẽ không có phản hồi đâu!

Bởi Thuận Bùi

Runner at Yêu Chạy Bộ. Blogger at Ba Lô & Dép Lào. Web Developer at TB's Blog.
Follow me: Facebook / Instagram

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 *