Я хочу создать пользовательскую кнопку добавления в корзину, чтобы добавить свой 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() ) );
Благодаря !