Php 自定义添加到购物车按钮,将多个产品添加到购物车中,数量为

Php 自定义添加到购物车按钮,将多个产品添加到购物车中,数量为,php,ajax,wordpress,woocommerce,Php,Ajax,Wordpress,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=我的产品id例如:45,99152 <script> jQuery('#buy').

我想创建自定义添加到购物车按钮,将我的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=我的产品id例如:45,99152

 <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>

jQuery(“#购买”)。单击(函数(e){
e、 预防默认值();
var myStringArray=[];
var arrayLength=myStringArray.length;
对于(变量i=0;i
你可以用它来链接

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

谢谢

在数组中保存产品id并发出ajax请求

 jQuery("#addSelected").click(function() {  var arrayLength =
 arrayOfAddedProducts.length;   jQuery.ajax({
         type: "POST",
         url: ajaxurl,
         data: {action : 'add_item_from_cart','getIDtoAdd' : arrayOfAddedProducts},
         success: function (res) {
            wc_load_all_products();
         }
     }); });
function.php

function add_item_from_cart() {
   foreach ($_POST['getIDtoAdd'] as $productId) {
      WC()->cart->add_to_cart( intval($productId), 1, 0, array(), array() );
    // WC()->cart->add_to_cart( $product_id = 0, $quantity = 1, $variation_id = 0, $variation = array(), $cart_item_data = array() );
   }
}

add_action('wp_ajax_add_item_from_cart', 'add_item_from_cart');
add_action('wp_ajax_nopriv_add_item_from_cart', 'add_item_from_cart');

不适合我,它总是跳过一个或多个产品。好像请求太快了。可能是什么?@flowDsign如果它跳过了一些产品,那么您需要为每个请求添加一些延迟时间。如果您将在addToCart的for循环中添加1秒或2秒延迟(myStringArray[i],2);然后它就可以工作了,但延迟不起作用。我已经删除了
for
循环,并使用ajax success函数使用一个变量进行计数,以便在每个请求之后以及达到最大数量时有更多的控制。我实际上需要将数量从1增加到90。这真的是唯一的方法吗?您不能使用/glassful/?post\u type=product&add to cart=来获取超过1种产品,因为您的请求将被my Woo阻止。它的保护,以不超载数据库。更好的办法是将产品ID发送到wp ajax hook。我在下面添加了答案虽然这个链接可以回答这个问题,但最好在这里包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-@谢谢,我将在这里添加脚本:)一次添加多个产品的原始方法。谢谢