在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);
}
}
}
}
所有产品都已添加到购物车,但高价销售似乎是在继承主要产品的属性数据。
我尝试过:
unset()
辅助函数以某种方式检测到$ _POST变量是否存在的情况下,将$_POST
临时设为add_to_cart()
并将空值加到购物车上。woocommerce_add_to_cart
,问题仍然存在,并且由于功能代码再次触发钩子而导致无限循环如何防止购物车中的数据重复?