在 WooCommerce 中,可以使用以下代码解决这个问题:
// 检查虚拟产品和非虚拟产品是否同时添加 add_filter('woocommerce_add_to_cart_validation', 'avoid_adding_virtual_and_physical_products', 10, 3 ); function avoid_adding_virtual_and_physical_products( $passed, $product_id, $quantity ) {
// 如果虚拟产品和非虚拟产品同时添加到购物车中
if( WC()->cart->has_virtual_product() && ! WC()->cart->product_is_virtual( $product_id ) ){
// 移除此产品
WC()->cart->remove_cart_item( WC()->cart->generate_cart_id( $product_id ) );
// 显示错误消息
wc_add_notice( __('You cannot add virtual and physical products in the same cart!', 'woocommerce' ), 'error' );
$passed = false;
}
return $passed;
}
此代码添加了一个钩子,每次添加产品到购物车时都会触发。如果添加了虚拟产品和非虚拟产品,则将从购物车中删除非虚拟产品,并显示错误消息。
上一篇:不要保留资源的历史记录