Woocommerce Set Max Quantity | Thiết lập Số lượng Tối đa được mua cho Sản phẩm

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.

Thiết lập Số lượng Tối đa được mua cho Sản phẩm Woocommerce Set Max Quantity by RealDev
Thiết lập Số lượng Tối đa được mua cho Sản phẩm Woocommerce Set Max Quantity by RealDev

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:

Thân mến và Trân trọng tín nhiệm của Bạn.!

4.6/5 - (123 Yêu thích)

Về Tác giả

Founder
Trần Đạo aka RealDev là một lập trình viên PHP, một SEO chuyên nghiệp, làm việc toàn thời gian và lâu năm với WordPress. Tôi có nhiều kinh nghiệm cho các dự án SEO. Tôi cũng đã tham gia vào thiết kế, vận hành các Website WordPress trong nhiều lĩnh vực như TMĐT, Nội thất, Du lịch, Văn phòng, Công ty, Đơn vị ... Tôi cũng là chủ sở hữu Website RealDev.vn và cũng là nhà sáng lập cộng đồng VietCoders Community. Tôi là Founder và CEO của RealGOOD Quintessence JSC.
Xem thêm

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 *

Facebook Facebook
Zalo Zalo
Phone Phone
Đã Copy vào Bộ nhớ tạm
Trang web này sử dụng cookie để cung cấp cho bạn trải nghiệm duyệt web tốt hơn. Bằng cách duyệt trang web này, bạn đồng ý với việc chúng tôi sử dụng cookie.