Woocommerce PHP向购物车添加购物车会导致购物车数据重复

Woocommerce PHP向购物车添加购物车会导致购物车数据重复,php,wordpress,woocommerce,hook-woocommerce,Php,Wordpress,Woocommerce,Hook Woocommerce,在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="

在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>
所有产品都添加到购物车中,但追加销售似乎继承了主产品的属性数据

我试过:

  • 在向购物车添加销售时,临时使用
    unset()
    为null
    $\u POST
    ,以防
    add\u to\u cart()
    帮助函数检测到存在$\u POST变量
  • 添加简单和可变产品后,这两种产品类型都存在问题
  • 将钩子更改为
    woocommerce\u add\u to\u cart
    ,问题仍然存在,并且当函数代码再次触发钩子时,这会导致无休止的循环

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

自WooCommerce 3.3.0以来,属性不再显示在名称下,而是显示在标题中。你有改变这一点的插件吗?@Kaperto是的,谢谢。这是我的代码造成的。不是WP核心的问题
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);
            }
        }
    }

}