add_action( 'template_redirect', function() {
// Only For Multiple Add-to-cart Requests
if(
! class_exists( 'WC_Form_Handler' )
|| empty( $_REQUEST['add-to-cart'] )
|| ! strpos( $_REQUEST['add-to-cart'], ',' )
) {
return;
}
// Get Requests
$product_ids = explode( ',', $_REQUEST['add-to-cart'] );
$quantities = explode( ',', $_REQUEST['quantity'] );
// Products And Quantity Counts Must Match
if( count( $product_ids ) !== count( $quantities ) ) {
return;
}
// Stop Default Handler
remove_action( 'wp_loaded', [ 'WC_Form_Handler', 'add_to_cart_action' ], 20 );
// Loop Add-to-cart Requests
foreach( $product_ids as $i => $product_id ) {
$product_id = absint( $product_id );
$quantity = wc_stock_amount( absint( $quantities[$i] ) );
$added_to_cart = WC()->cart->add_to_cart( $product_id, $quantity );
if( $added_to_cart ) {
wc_add_to_cart_message( [ $product_id => $quantity ], true );
}
}
} );
Accept multiple product quantity add-to-cart in single request
Handles multiple simple product and quantity add-to-cart items in a single request. Requests take the comma delimited form:
/cart/?add-to-cart=1,2,3&quantity=1,1,1
How to use
PHP Code Snippets
- Log into a staging, development, or locally hosted clone of your site
- Install and activate Code Snippets
- WP Admin > Snippets > Add New
- Copy and paste the code from the Description tab above
- Check to ensure formatting came over properly and no syntax errors show up in the editor
- Customize the code as desired
- Add a meaningful title
- Select whether to run on front-end or back-end (or both)
- Click “Save and Activate”
- Test your site to ensure it works
- Disable if any problems, or recover
- Repeat for live environment
License
All code snippets are licensed GPLv2 (or later) matching WordPress licensing.
Disclaimer of warranty:
Except when otherwise stated in writing the copyright holders and/or other parties provide the program as-is without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose.
Support
- Describe the issue and what you’ve observed.
- Describe your expected outcome(s).
- List steps to reproduce the issue.
- Optionally provide screen-shot or video URLs.
