Пользовательская кнопка добавления в корзину, чтобы добавить несколько товаров в корзину с количеством: woocommerce

Я хочу создать пользовательскую кнопку добавления в корзину, чтобы добавить свой 3-х товар в корзину с 2 количеством для каждого.

Чтобы добавить три продукта в корзину, я сделал следующее:

<a id="buy" class="single_add_to_cart_button shop-skin-btn shop-flat-btn alt" href="#">ADD MY PRODUCT</a> 

$ p_id = мой идентификатор продукта, например: 45,99,152

  <script> jQuery('#buy').click(function(e) { e.preventDefault(); var myStringArray = [<?php echo $p_id; ?>]; var arrayLength = myStringArray.length; for (var i = 0; i < arrayLength; i++) { addToCart(myStringArray[i]); } return true; }); function addToCart(p_id) { $.get('/glassful/?post_type=product&add-to-cart=' + p_id, function() { $(".show_success").show(); }); } </script> 

Он добавит мой приведенный продукт в корзину, но только с 1 количеством. Пожалуйста, дайте мне знать, как я могу добавить количество? Я хочу добавить 2 количества каждого продукта.

Средство при нажатии на добавление в корзину три продукта будут добавлены в корзину по 2 штуки.

Спасибо за помощь заранее.

Вам нужно передать количество в строке запроса, например:

 ?post_type=product&add-to-cart=100&quantity=2 

Я изменил код

  <script> jQuery('#buy').click(function(e) { e.preventDefault(); var myStringArray = [<?php echo $p_id; ?>]; var arrayLength = myStringArray.length; for (var i = 0; i < arrayLength; i++) { addToCart(myStringArray[i],2); } return true; //window.location.href = "http://seoexpertiser.ca/glassful/cart/"; }); function addToCart(p_id,qu) { $.get('/glassful/?post_type=product&add-to-cart=' + p_id +'&quantity='+qu, function() { // success $(".show_success").show(); }); } </script> 

Я думаю, что это решит вашу проблему.

Пожалуйста, проверьте эту ссылку, это работает для меня 🙂

WooCommerce: разрешить добавлять в корзину несколько продуктов через строку запроса в корзину

functions.php

 function woocommerce_maybe_add_multiple_products_to_cart() { // Make sure WC is installed, and add-to-cart qauery arg exists, and contains at least one comma. if ( ! class_exists( 'WC_Form_Handler' ) || empty( $_REQUEST['add-to-cart'] ) || false === strpos( $_REQUEST['add-to-cart'], ',' ) ) { return; } // Remove WooCommerce's hook, as it's useless (doesn't handle multiple products). remove_action( 'wp_loaded', array( 'WC_Form_Handler', 'add_to_cart_action' ), 20 ); $product_ids = explode( ',', $_REQUEST['add-to-cart'] ); $count = count( $product_ids ); $number = 0; foreach ( $product_ids as $product_id ) { if ( ++$number === $count ) { // Ok, final item, let's send it back to woocommerce's add_to_cart_action method for handling. $_REQUEST['add-to-cart'] = $product_id; return WC_Form_Handler::add_to_cart_action(); } $product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $product_id ) ); $was_added_to_cart = false; $adding_to_cart = wc_get_product( $product_id ); if ( ! $adding_to_cart ) { continue; } $add_to_cart_handler = apply_filters( 'woocommerce_add_to_cart_handler', $adding_to_cart->product_type, $adding_to_cart ); /* * Sorry.. if you want non-simple products, you're on your own. * * Related: WooCommerce has set the following methods as private: * WC_Form_Handler::add_to_cart_handler_variable(), * WC_Form_Handler::add_to_cart_handler_grouped(), * WC_Form_Handler::add_to_cart_handler_simple() * * Why you gotta be like that WooCommerce? */ if ( 'simple' !== $add_to_cart_handler ) { continue; } // For now, quantity applies to all products.. This could be changed easily enough, but I didn't need this feature. $quantity = empty( $_REQUEST['quantity'] ) ? 1 : wc_stock_amount( $_REQUEST['quantity'] ); $passed_validation = apply_filters( 'woocommerce_add_to_cart_validation', true, $product_id, $quantity ); if ( $passed_validation && false !== WC()->cart->add_to_cart( $product_id, $quantity ) ) { wc_add_to_cart_message( array( $product_id => $quantity ), true ); } } } // Fire before the WC_Form_Handler::add_to_cart_action callback. add_action( 'wp_loaded', 'woocommerce_maybe_add_multiple_products_to_cart', 15 ); 

и вы можете использовать для своей ссылки.

 $product_ids = implode( ',', array( 1, 2, 55 ) ); $url = esc_url_raw( add_query_arg( 'add-to-cart', $product_ids, wc_get_checkout_url() ) ); 

Благодаря !