Mình thường chia sẻ Plugin/ Theme miễn phí trên trang cá nhân và mình thường Set số lượng trong kho để quản lý. Tuy nhiên nếu mình cho phép áp mã giảm giá 100% mà người dùng đặt 998 sản phẩm trong khi trong kho còn 999 sản phẩm điều này sẽ dẫn đến Hết Hàng mà mình không biết, vì thế function này mình áp cho mình và cũng chia sẻ lại cho mọi người.
Function Set Max Quantity | Cho phép Số lượng Tối đa được mua cho Sản phẩm
Mã code cũng khá đơn giản, để cho phép Số lượng Tối đa được mua cho Sản phẩm bạn làm theo hướng dẫn:
Hướng dẫn Sử dụng
Để sử dụng Woocommerce Set Max Quantity | Thiết lập Số lượng Tối đa được mua cho Sản phẩm rất đơn giản. Bạn hãy thêm Function được hướng dẫn trong Bài đăng này vào vị trí theo các bước chi tiết trong hướng dẫn dưới đây.
Đối với phần Functions:
- Bước 1: Truy cập vào Admin Dashboard tìm đến Giao diện (Themes) / Theme File Editor / Functions.php.
- Bước 2: Cuộn xuống dưới cùng của trình chỉnh sửa, dán Code sau vào cuối tệp và lưu lại.
- Bước 3: Chú ý, một số trường hợp cần Clear Cache nếu bạn đang sử dụng các Plugin Cache như WP Rocket, LiteSpeed Cache, ..etc
- Bước 4: Thưởng thức
Đối với phần CSS:
- Bước 1: Ở ngoài Front End (Giao diện người dùng, ví dụ Trang chủ). Trên thanh điều hướng Admin Bạn truy cập vào Tùy Biến (Customize) và tìm đến phần Custom CSS.
- Bước 2: Copy phần CSS và dán vào cuối phần chứa mã CSS và Lưu lại.
- Bước 3: Tải lại trang (Reload Page) hiển thị phần CSS trên. Chú ý, một số trường hợp cần Clear Cache nếu bạn đang sử dụng các Plugin Cache như WP Rocket, LiteSpeed Cache, ..etc.
- Bước 4: Thưởng thức
MẸO: Bạn có thể sử dụng phím tắt để Tải lại trang không kèm Cache, tuy nhiên vẫn cần chú ý Clear Cache với các Plugin tạo Cache như Bước 3.
Với Windows: Ctrl + Shift + R
Với macOS: Command + Shift + R
/*
* Cho phép Số lượng Tối đa được mua cho Sản phẩm
* Mặc định 5 sản phẩm
* Chia sẻ bởi https://realdev.vn/
*/
add_filter( 'woocommerce_add_to_cart_validation', 'realdev_quantity_limit', 10, 3 );
function realdev_quantity_limit( $passed, $product_id, $quantity ) {
$max = 5;
$current = WC()->cart->get_cart_item_quantities();
$quantity = isset( $current[$product_id] ) ? $current[$product_id] : 0;
if ( $quantity + $quantity > $max ) {
wc_add_notice( sprintf( 'Bạn chỉ có thể mua tối đa %s sản phẩm "%s".', $max, get_the_title( $product_id ) ), 'error' );
$passed = false;
}
return $passed;
}
Hướng dẫn tùy chỉnh Set Max Quantity Woocommerce
Để tùy chỉnh cũng không có gì quá khó, nhưng mình sẽ hướng dẫn bạn.
Thay đổi số lượng cho phép thêm vào giỏ
Mặc định mình sẽ là 5 trong $max = 5;
nên bạn chỉ cần thay đổi thành số lượng bạn cần. Ví dụ trong phần dưới mình set là 10 chẳng hạn.
/*
* Cho phép Số lượng Tối đa được mua cho Sản phẩm
* Mặc định 10 sản phẩm
* Chia sẻ bởi https://realdev.vn/
*/
add_filter( 'woocommerce_add_to_cart_validation', 'realdev_quantity_limit', 10, 3 );
function realdev_quantity_limit( $passed, $product_id, $quantity ) {
$max = 10;
$current = WC()->cart->get_cart_item_quantities();
$quantity = isset( $current[$product_id] ) ? $current[$product_id] : 0;
if ( $quantity + $quantity > $max ) {
wc_add_notice( sprintf( 'Bạn chỉ có thể mua tối đa %s sản phẩm "%s".', $max, get_the_title( $product_id ) ), 'error' );
$passed = false;
}
return $passed;
}
Chỉ Set Giới hạn Số lượng cho một hoặc nhiều sản phẩm chỉ định
Để làm điều này thì mã code chia sẻ bên trên không phù hợp, nên mình đã code lại một chút để đảm bảo nó hoạt động và áp dụng cho một hoặc nhiều Sản phẩm cụ thể.
Với chỉ 1 Sản phẩm
Bạn chỉ cần thay đổi ID cho sản phẩm thực tế. Để biết được ID, bạn hãy sửa sản phẩm và nhìn số trong URL của trang chỉnh sửa sản phẩm. Ví dụ với slug: /wp-admin/post.php?post=4316&action=edit
Thì ID sản phẩm là: 4316
. Từ đó mã code là
/*
* Giới hạn số lượng sản phẩm có thể mua cho sản phẩm cụ thể
* Mặc định 10 sản phẩm
* Chia sẻ bởi https://realdev.vn/
*/
add_filter( 'woocommerce_add_to_cart_validation', 'realdev_quantity_limit', 10, 3 );
function realdev_quantity_limit( $passed, $product_id, $quantity ) {
$ids = array( 4316); // Thay đổi ID sản phẩm theo yêu cầu
$max = 10;
if ( in_array( $product_id, $ids ) ) {
$current = WC()->cart->get_cart_item_quantities();
$quantity = isset( $current[$product_id] ) ? $current[$product_id] : 0;
if ( $quantity + $quantity > $max ) {
wc_add_notice( sprintf( 'Bạn chỉ có thể mua tối đa %s sản phẩm "%s".', $max, get_the_title( $product_id ) ), 'error' );
$passed = false;
}
}
return $passed;
}
Với nhiều sản phẩm
Cũng với mã trên, bạn chỉ cần liệt kê danh sách trong mã ví dụ dưới.
/*
* Giới hạn số lượng sản phẩm có thể mua cho sản phẩm cụ thể
* Mặc định 10 sản phẩm
* Chia sẻ bởi https://realdev.vn/
*/
add_filter( 'woocommerce_add_to_cart_validation', 'realdev_quantity_limit', 10, 3 );
function realdev_quantity_limit( $passed, $product_id, $quantity ) {
$ids = array( 4316 , 123, 456, 789); // Thay đổi ID sản phẩm theo yêu cầu
$max = 10;
if ( in_array( $product_id, $ids ) ) {
$current = WC()->cart->get_cart_item_quantities();
$quantity = isset( $current[$product_id] ) ? $current[$product_id] : 0;
if ( $quantity + $quantity > $max ) {
wc_add_notice( sprintf( 'Bạn chỉ có thể mua tối đa %s sản phẩm "%s".', $max, get_the_title( $product_id ) ), 'error' );
$passed = false;
}
}
return $passed;
}
Như bạn thấy mình đã liệt kê $ids = array( 4316 , 123, 456, 789); với các ID là số và một điều quan trọng là phân tách bằng dấu phẩy ,
thì mới hiệu lực nha bạn.
Loại trừ giới hạn số lượng sản phẩm được thêm vào giỏ hàng
Nếu có chỉ định cho sản phẩm hoặc nhiều sản phẩm chỉ định thì cũng có loại trừ nếu bạn muốn áp cho tất cả nhưng loại trừ một hoặc nhiều sản phẩm được phép thêm không giới hạn.
Loại trừ 1 sản phẩm
Để loại trừ một sản phẩm bạn làm theo ví dụ bên dưới, cách lấy ID sản phẩm tương tự bên trên nhé.
/*
* Giới hạn số lượng sản phẩm có thể mua, ngoại trừ sản phẩm cụ thể
* Mặc định 10 sản phẩm
* Chia sẻ bởi https://realdev.vn/
*/
add_filter( 'woocommerce_add_to_cart_validation', 'realdev_quantity_limit', 10, 3 );
function realdev_quantity_limit( $passed, $product_id, $quantity ) {
$excluded_ids = array( 4316); // Thay đổi ID sản phẩm theo yêu cầu
$max = 10;
if ( !in_array( $product_id, $excluded_ids ) ) {
$current = WC()->cart->get_cart_item_quantities();
$cart_quantity = isset( $current[$product_id] ) ? $current[$product_id] : 0;
if ( $cart_quantity + $quantity > $max ) {
wc_add_notice( sprintf( 'Bạn chỉ có thể mua tối đa %s sản phẩm "%s".', $max, get_the_title( $product_id ) ), 'error' );
$passed = false;
}
}
return $passed;
}
Loại trừ nhiều sản phẩm
Tương tự với áp dụng cho nhiều sản phẩm, cách lấy và nhập ID cũng tương tự, chỉ khác ở cách nó áp dụng theo điều kiện bạn muốn.
/*
* Giới hạn số lượng sản phẩm có thể mua, ngoại trừ sản phẩm cụ thể
* Mặc định 10 sản phẩm
* Chia sẻ bởi https://realdev.vn/
*/
add_filter( 'woocommerce_add_to_cart_validation', 'realdev_quantity_limit', 10, 3 );
function realdev_quantity_limit( $passed, $product_id, $quantity ) {
$excluded_ids = array( 4316, 123, 456, 789 ); // Thay đổi ID sản phẩm theo yêu cầu
$max = 10;
if ( !in_array( $product_id, $excluded_ids ) ) {
$current = WC()->cart->get_cart_item_quantities();
$cart_quantity = isset( $current[$product_id] ) ? $current[$product_id] : 0;
if ( $cart_quantity + $quantity > $max ) {
wc_add_notice( sprintf( 'Bạn chỉ có thể mua tối đa %s sản phẩm "%s".', $max, get_the_title( $product_id ) ), 'error' );
$passed = false;
}
}
return $passed;
}
Kết
Vậy là mình đã chia sẻ và hướng dẫn bạn thêm chức năng Giới hạn Số lượng sản phẩm được thêm vào Giỏ hàng một cách đơn giản và hiệu quả kèm hướng dẫn chi tiết.
Lời ngỏ từ RealDev
Để viết lên được một bài đăng tâm huyết thì mình cũng mất rất nhiều thời gian cho việc viết code, viết content, tạo ảnh, thêm các hướng dẫn custom nên đừng tiếc tặng mình một đánh giá, reviews thật lòng nhé. Điều này rất quan trọng vì nó giúp mình có thêm động lực và niềm vui cho đi hơn.!
Các Function / Kiến thức được chia sẻ trên RealDev đều hoàn toàn tham khảo từ các nguồn chính thống của WordPress / Themes và Plugins. Bản thân mình thấy nó có ích và muốn chia sẻ tới nhiều người để hiểu hơn. Hãy sử dụng cẩn thận và chắc chắn nếu bạn có kiến thức về Website WordPress và tránh xung đột các tên Functions. Mọi sự hỗ trợ hãy Comment, để được giúp đỡ.
Chúc một ngày giàu năng lượng và nhiều tốt lành, may mắn đến Bạn và Gia đình.!
Nếu bạn cần mình hỗ trợ thêm, hoặc muốn liên hệ mình làm Dịch vụ nào đó liên quan đến Website WordPress thì mình luôn sẵn sàng phục vụ bạn bằng tất cả cái Tâm và Tầm mình có. Liên hệ mình theo một trong nhiều phương cách dưới đây:
- Hotline: 0907.648.555
- Facebook: https://www.facebook.com/TuNguoiTruyenLua/
- Zalo: https://zalo.me/vinhminhdao
Thân mến và Trân trọng tín nhiệm của Bạn.!