Woocommerce PHP向购物车添加购物车会导致购物车数据重复
在WooCommerce中,我将向产品页面添加隐藏字段,以允许客户在添加到购物车过程中选择追加销售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="
<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>
所有产品都添加到购物车中,但追加销售似乎继承了主产品的属性数据
我试过:
- 在向购物车添加销售时,临时使用
为nullunset()
,以防$\u POST
帮助函数检测到存在$\u POST变量add\u to\u cart()
- 添加简单和可变产品后,这两种产品类型都存在问题
- 将钩子更改为
,问题仍然存在,并且当函数代码再次触发钩子时,这会导致无休止的循环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);
}
}
}
}