簡體   English   中英

將多種產品添加到購物車

[英]Add multiple products to cart

我的邏輯有些問題,我們將不勝感激:

$total_add = $_POST['xTotalNumProduct'];

if(ISSET($_SESSION['cart']['CartTotalNum']) && $_SESSION['cart']['CartTotalNum'] > 0) {
    $CartTotalNum = $_SESSION['cart']['CartTotalNum'];
    $cart = $_SESSION['cart'];

    for ($i=1; $i<=$total_add; $i++) {

        for ($x=1; $x<=$CartTotalNum; $x++) {
            if ($cart['ItemId'.$x] == $_POST['xPdt'.$i.'Id']) { // this will only check the first key ie $cart['ItemId1]
                $cart['ItemQty'.$x] = $_POST['xPdt'.$i.'Qty'];
            }
            else {
                $CartTotalNum = $CartTotalNum + 1;
                $cart['ItemId'.$CartTotalNum] = $_POST['xPdt'.$i.'Id'];
                $cart['ItemQty'.$CartTotalNum] = $_POST['xPdt'.$i.'Qty'];
            }
        }
    }
    $cart['CartTotalNum'] = $CartTotalNum;

} else {
    $cart = array();
    for ($i=1; $i<=$total_add; $i++) {
        $cart['ItemId'.$i] = $_POST['xPdt'.$i.'Id'];
        $cart['ItemQty'.$i] = $_POST['xPdt'.$i.'Qty'];      
    }
    $cart['CartTotalNum'] = $total_add;
}

上述腳本的問題在於,它僅檢查$ cart ['ItemId1],如果不相等,它將添加到購物車中,而不檢查$ cart ['ItemId2],$ cart ['ItemId3]等。

我該如何解決?

這是非常糟糕的代碼:

            $cart['ItemQty'.$x] = $_POST['xPdt'.$i.'Qty'];
                          ^^^^^

為什么要建立動態鍵? 您可以輕松使用安靜的多維數組:

   $_SESSION['cart'][$itemID]['quantity'] = $_POST[...];

通過itemID來對購物車進行鍵控,可以將所有購物車數據保存在一個地方,而不是分散在各處。

並注意,可以在表單字段名稱中使用類似的構造,例如

<input type="text" name="foo[bar][baz][42]" ... >

會給你

$_REQUEST['foo']['bar']['baz'][42]

在提交表單時使用。

這個問題是幾年前提出的,但是對於現在遇到這個問題的任何人來說,這都是對我有用的。

我將此HTML放在頁面中:

<form method="post" action="/">

    <input type="hidden" name="E24MT1260" value="23">
    <input type="hidden" name="ACFIT60060015" value="14">

    <input type="hidden" name="programatic_add_to_cart" value="true">
    <input type="submit" value="Add to cart">

</form>

並將其添加到我的functions.php

<?php

    add_action('wp_loaded', function() {
        global $woocommerce;

        if (!empty($_POST) && !empty($_POST['programatic_add_to_cart'])){ 
            global $woocommerce;

            foreach ($_POST as $sku => $quantity) {

                $product_id = wc_get_product_id_by_sku($sku);
                $woocommerce->cart->add_to_cart($product_id, $quantity);
            }

            wp_redirect( '/cart' );
            exit;
        }

    });

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM