Woocommerce PHP add_to_cart导致购物车数据重复

在WooCommerce中,我正在向产品页面添加隐藏字段,以允许客户在添加到购物车过程中选择加价销售。

<form class="variations_form cart">
    [...]
    <input type="hidden" name="cross_sell[26831]" id="cross-sell-26831" value="1" />
    <input type="hidden" name="cross_sell[33484]" id="cross-sell-33484" value="1" />
    [...]
</form>

functions.php中的以下代码用于将出售商品添加到购物车中。

add_action('woocommerce_ajax_added_to_cart','add_up_sells_to_cart',1);

function add_up_sells_to_cart() {

    $cross_sells = $_POST['cross_sell'];
    if(!is_array($cross_sells)) return;

    foreach($cross_sells as $product_id => $quantity) {

        if($quantity > 0) {
            $product = wc_get_product($product_id);

            if ($product->is_type('variation')) {
                $cart_id = WC()->cart->add_to_cart($product->get_parent_id(),$quantity,$product_id,wc_get_product_variation_attributes( $product_id ));
            } else {
                $cart_id = WC()->cart->add_to_cart($product_id,$quantity);
            }
        }
    }

}

所有产品都已添加到购物车,但高价销售似乎是在继承主要产品的属性数据。

Woocommerce PHP add_to_cart导致购物车数据重复

我尝试过:

  • unset()辅助函数以某种方式检测到$ _POST变量是否存在的情况下,将$_POST临时设为add_to_cart()并将空值加到购物车上。
  • 同时添加简单产品和可变产品,两种产品类型都存在该问题
  • 将钩子更改为woocommerce_add_to_cart,问题仍然存在,并且由于功能代码再次触发钩子而导致无限循环

如何防止购物车中的数据重复?

ldg2000 回答:Woocommerce PHP add_to_cart导致购物车数据重复

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3110429.html

大家都在问