Code thêm phụ phí đơn hàng nhỏ trong WooCommerce
Bài viết này mình sẽ hướng dẫn bạn cách thêm phụ phí đơn hàng nhỏ trong WooCommerce nhé.
Đơn 30–50 nghìn thì tiền ship và công đóng gói có khi đã gần bằng tiền lãi, nhiều shop vì vậy thu thêm một khoản phí nhỏ với đơn dưới một mức nhất định, vừa bù chi phí vừa khuyến khích khách mua thêm cho đủ mức. WooCommerce mặc định không có chỗ nào để thu phí theo giá trị đơn hàng, nên muốn có thì bạn phải code thêm bằng PHP nhé.
Mục lục nội dung bài viếtHiện
Thêm code phụ phí đơn hàng nhỏ
Bạn chỉ cần thêm code dưới vào cuối file functions.php của child theme nhé. Nhớ sao lưu file trước khi sửa, và đừng chèn vào theme cha vì khi theme cập nhật sẽ mất code.
<?php
// Phu phi don hang nho - them vao functions.php cua child theme
add_action( 'woocommerce_cart_calculate_fees', 'nn_phu_phi_don_hang_nho' );
function nn_phu_phi_don_hang_nho( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) ) {
return;
}
$muc_toi_thieu = 150000;
$phi = 15000;
$tam_tinh = $cart->get_subtotal();
if ( $tam_tinh > 0 && $tam_tinh < $muc_toi_thieu ) {
$cart->add_fee( 'Phụ phí đơn hàng nhỏ (dưới 150.000đ)', $phi, false );
}
}
Code trên móc vào woocommerce_cart_calculate_fees, móc này WooCommerce chạy mỗi lần tính lại tổng tiền giỏ hàng, cả ở trang giỏ hàng lẫn trang thanh toán. Hàm kiểm tra 2 điều kiện an toàn trước: bỏ qua trong trang quản trị nhờ is_admin() kết hợp DOING_AJAX để không tính phí nhầm khi shop xử lý đơn trong admin. Mức tối thiểu đặt trong biến $muc_toi_thieu là 150.000đ, phí đặt trong biến $phi là 15.000đ; tổng tiền hàng lấy qua $cart->get_subtotal() là tiền hàng chưa tính phí vận chuyển, thuế và chưa trừ mã giảm giá. Đơn nào tổng tiền hàng trên 0 mà dưới 150.000đ thì $cart->add_fee() cộng thêm 15.000đ vào đơn, hiện thành dòng “Phí” trong giỏ hàng và trang thanh toán. Tham số false cuối cùng nghĩa là phí này không tính thuế.
Kiểm tra phụ phí đã cộng chưa
Bạn thêm sản phẩm vào giỏ sao cho tổng tiền hàng dưới 150.000đ, mở trang giỏ hàng sẽ thấy dòng phí 15.000đ cộng vào tổng tiền. Thêm tiếp sản phẩm cho tổng vượt 150.000đ rồi tải lại trang, dòng phí biến mất. Đổi 2 số 150000 và 15000 trong code thành mức của shop bạn, ví dụ thu 10.000đ với đơn dưới 100.000đ.

Lưu ý khi dùng
Bài này khác với bài code thêm phụ phí khi khách chọn thanh toán khi nhận hàng (COD) trong WooCommerce: bài đó thu phí theo phương thức thanh toán khách chọn, còn bài này thu phí theo giá trị giỏ hàng dù khách thanh toán bằng cách nào. Mức so sánh là tiền hàng chưa trừ mã giảm giá, nên khách dùng mã giảm giá mạnh vẫn có thể bị tính phí nếu tiền hàng gốc dưới mức — muốn tính sau khi trừ mã thì đổi get_subtotal() thành get_subtotal() – get_discount_total(). Tính năng này đi chung với bài code chỉ hiện miễn phí vận chuyển và nhận tại cửa hàng khi đủ điều kiện trong WooCommerce là thành bộ điều kiện theo giá trị giỏ hàng cho shop.
Kết luận
Vậy là chỉ với 1 đoạn code ngắn bạn đã thêm phụ phí đơn hàng nhỏ trong WooCommerce mà không cần cài thêm plugin rồi nhé. Tính năng này đi chung với bài code thêm phụ phí khi khách chọn thanh toán khi nhận hàng (COD) trong WooCommerce và bài code chỉ hiện miễn phí vận chuyển và nhận tại cửa hàng khi đủ điều kiện trong WooCommerce là thành bộ kiểm soát chi phí đơn hàng cho shop WooCommerce.
Nếu cần mình kèm 1-1 về WooCommerce thì cứ liên hệ mình nhé.
