Một cửa hàng trực tuyến bán các sản phẩm thời trang sử dụng WooCommerce trên WordPress. Chủ cửa hàng nhận thấy trạng thái tồn kho mặc định của WooCommerce không đủ rõ ràng để cung cấp thông tin hữu ích cho khách hàng.
Vấn đề:
- WooCommerce chỉ hiển thị trạng thái mặc định như “In Stock”, “Out of Stock”, hoặc “Available on Backorder”, không nói rõ số lượng tồn kho.
- Khách hàng không cảm thấy gấp rút mua sắm khi sản phẩm sắp hết hàng, dẫn đến doanh số giảm.
- Khi hàng còn nhiều, thông tin không cần chi tiết đến từng đơn vị mà chỉ cần thông báo tổng quát.
Yêu cầu:
- Khi hàng còn nhiều (trên 10 sản phẩm), hiển thị thông báo tổng quát: “Còn 10 sản phẩm” để không làm loãng giao diện.
- Khi hàng sắp hết (từ 1 đến 10 sản phẩm), hiển thị cụ thể số lượng còn lại, ví dụ: “Còn 3 sản phẩm”, tạo tâm lý gấp rút mua sắm.
- Khi hết hàng, hiển thị thông báo: “Tạm hết” thay vì mặc định của WooCommerce.
Đoạn code này được sử dụng để tùy chỉnh thông báo trạng thái còn hàng (availability) trong WooCommerce, một plugin bán hàng phổ biến trên WordPress.
add_filter( 'woocommerce_get_availability', 'custom_availability', 10, 2 );
function custom_availability( $availability, $product ) {
$stock_quantity = $product->get_stock_quantity();
if ( $stock_quantity > 10 ) {
$availability['availability'] = 'Còn 10 sản phẩm';
} elseif ( $stock_quantity > 0 && $stock_quantity <= 10 ) {
$availability['availability'] = 'Còn ' . $stock_quantity . ' sản phẩm';
}
else {
$availability['availability'] = 'Tạm hết';
}
return $availability;
}
1. Chức năng chính của đoạn code
- Mục đích: Hiển thị trạng thái tồn kho của sản phẩm dựa trên số lượng hàng còn lại.
- Cách hoạt động:
- Nếu số lượng hàng tồn kho lớn hơn 10, thông báo sẽ là: “Còn 10 sản phẩm”.
- Nếu số lượng hàng tồn kho từ 1 đến 10, thông báo sẽ là: “Còn X sản phẩm”, trong đó
X
là số lượng cụ thể. - Nếu hết hàng, thông báo sẽ là: “Tạm hết”.
2. Giải thích chi tiết đoạn code
a. add_filter( 'woocommerce_get_availability', 'custom_availability', 10, 2 );
woocommerce_get_availability
: Hook được WooCommerce sử dụng để lấy thông tin trạng thái còn hàng của sản phẩm.custom_availability
: Tên hàm tùy chỉnh sẽ được gọi để thay đổi trạng thái còn hàng.10
: Độ ưu tiên của hàm (số càng nhỏ, ưu tiên càng cao).2
: Số lượng tham số được truyền vào hàmcustom_availability
.
b. Hàm custom_availability( $availability, $product )
$availability
: Mảng chứa thông tin về trạng thái còn hàng (bao gồm thông báo và lớp CSS tương ứng).$product
: Đối tượng sản phẩm hiện tại, từ đó lấy được thông tin như số lượng tồn kho.
c. Logic trong hàm
$product->get_stock_quantity()
: Lấy số lượng hàng tồn kho.- Điều kiện:
- Nếu số lượng lớn hơn 10: Hiển thị thông báo cố định “Còn 10 sản phẩm”.
- Nếu số lượng từ 1 đến 10: Hiển thị số lượng cụ thể.
- Nếu hết hàng: Hiển thị “Tạm hết”.
d. return $availability;
Hàm trả lại mảng $availability
đã được tùy chỉnh, và WooCommerce sẽ sử dụng thông tin này để hiển thị trên giao diện người dùng.
3. Kết quả hiển thị trên website
Trạng thái còn hàng của sản phẩm sẽ được thay đổi theo logic trên. Ví dụ:
- Sản phẩm có 15 đơn vị tồn kho: “Còn 10 sản phẩm”.
- Sản phẩm có 7 đơn vị tồn kho: “Còn 7 sản phẩm”.
- Sản phẩm hết hàng: “Tạm hết”.
4. Tùy chỉnh thêm
Bạn có thể sửa đổi thông báo hoặc thêm logic mới vào đoạn code này để phù hợp hơn với nhu cầu thực tế. Ví dụ:
- Hiển thị thông báo chi tiết hơn khi hết hàng.
- Thay đổi ngôn ngữ hoặc định dạng thông báo.