Skip to content
Thuan Bui's Blog
Go back

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

Updated:

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.

Terminal window
add_filter( 'woocommerce_package_rates' , 'thuanbui_customize_shipping', 10, 2 );
function 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;
}

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

Để 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

Terminal window
add_filter( 'woocommerce_package_rates' , 'ycb_shipping', 10, 2 );
function 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;
}

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

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.


Share this post on:

Previous Post
Đánh giá nhanh case DeepCool CL500 - Hầm hố, nhiều tính năng, giá hợp lý
Next Post
[Case Study] Tối ưu tốc độ và Core Web Vitals website Lành Kitchen (lanhkitchen.com)