WooCommerce一键添加多商品至购物车实现方案咨询
WooCommerce一键添加多个商品至购物车解决方案
嘿,我来帮你搞定这个问题!首先得说,你一开始想的?add-to-cart=117&&118这种写法是行不通的,WooCommerce的查询参数不支持这种格式。下面给你几个靠谱的解决方案:
一、查询字符串方式(简单直接)
其实WooCommerce原生就支持通过重复add-to-cart参数来实现多商品添加,正确的格式是:
?add-to-cart=117&add-to-cart=118
如果需要指定每个商品的数量,可以搭配quantity参数(注意数量参数和商品ID是按顺序对应的):
?add-to-cart=117&quantity=1&add-to-cart=118&quantity=2
这个方式不用写代码,适合快速做测试或者给用户提供直接的链接,但要注意:
- 部分旧版WooCommerce可能存在兼容性问题
- 如果商品需要选择变体(比如颜色、尺寸),这种方式就不太适用了
二、自定义添加按钮(灵活可控)
如果需要在页面上做一个专门的按钮来触发多商品添加,可以用代码实现。把下面的代码加到你的主题functions.php或者自定义插件里:
function add_multiple_products_to_cart() { // 检测是否触发了添加多商品的动作 if ( isset( $_GET['add-multiple'] ) ) { // 定义要添加的商品ID数组 $target_products = array( 117, 118 ); // 循环添加每个商品到购物车 foreach ( $target_products as $product_id ) { WC()->cart->add_to_cart( $product_id ); } // 跳转回购物车页面,这里也可以改成商品列表页或者其他页面 wp_redirect( wc_get_cart_url() ); exit; } } add_action( 'template_redirect', 'add_multiple_products_to_cart' );
然后在你需要的页面上添加按钮:
<a href="?add-multiple=1" class="button wc-button">一键添加商品117和118</a>
三、自动关联添加(贴合你的需求)
如果你需要的是用户添加商品117时,自动把商品118也加入购物车,那这个钩子方案最适合你。同样把代码加到functions.php或自定义插件:
function auto_add_related_product_on_add( $cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data ) { // 当用户添加的是商品117时 if ( $product_id == 117 ) { $related_product_id = 118; $product_already_in_cart = false; // 先检查购物车里有没有已经添加了118,避免重复添加 foreach ( WC()->cart->get_cart() as $item ) { if ( $item['product_id'] == $related_product_id ) { $product_already_in_cart = true; break; } } // 如果没在购物车里,就自动添加 if ( !$product_already_in_cart ) { WC()->cart->add_to_cart( $related_product_id ); } } } add_action( 'woocommerce_add_to_cart', 'auto_add_related_product_on_add', 10, 6 );
这样用户点击商品117的“加入购物车”按钮后,系统会自动把118也塞进购物车,完全不需要额外操作,完美匹配你的需求。
小提醒
- 改动代码前记得备份网站,避免出问题
- 如果用查询字符串方式,确保商品是可购买状态(库存足够、不是禁售商品等)
- 钩子方案可以根据你的需求调整,比如修改商品ID、添加数量限制、针对特定用户角色生效等
内容的提问来源于stack exchange,提问作者Kevin.a
相关产品推荐
相关产品推荐

