WooCommerce如何仅在特定分类页面显示加入购物车按钮
WooCommerce 商品列表加购按钮自定义修改方案
直接替换你之前添加在主题functions.php文件中的原有代码即可,不需要额外安装插件。
核心实现逻辑
通过判断当前页面类型、循环内的商品类型,控制加购按钮的输出规则:
- 商店主页面的可变产品,不输出「选择选项」按钮
- 仅在商品分类页面,且当前商品为简单产品时,输出原生的「加入购物车」按钮
- 其余场景默认不输出按钮,避免可变产品跳转选规格的按钮显示在不符合预期的位置
可直接使用的代码
把原有那行add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 20 );代码删除,替换为以下代码:
/** * 自定义商品循环页加购按钮显示规则 */ add_action( 'woocommerce_after_shop_loop_item', 'custom_shop_loop_add_to_cart', 20 ); function custom_shop_loop_add_to_cart() { global $product; // 商店首页的可变产品直接不输出按钮 if ( is_shop() && $product->is_type( 'variable' ) ) { return; } // 商品分类页的简单产品,输出原生加购按钮 // 如果需要限定仅特定分类显示,把is_product_category()改成is_product_category( array( '你的分类别名', '分类ID' ) )即可 if ( is_product_category() && $product->is_type( 'simple' ) ) { woocommerce_template_loop_add_to_cart(); return; } // 其余场景不输出按钮 return; }
调整说明
- 如果你需要指定只有某几个商品分类显示加购按钮,只需要修改
is_product_category()内的参数,传入对应分类的别名、ID或者名称数组即可 - 如果你需要商店主页面的简单产品也显示加购按钮,在第一个判断块下方补充以下代码即可:
// 商店首页简单产品显示加购按钮 if ( is_shop() && $product->is_type( 'simple' ) ) { woocommerce_template_loop_add_to_cart(); return; }
- 修改代码前请提前备份
functions.php文件,避免语法错误导致站点无法访问
内容的提问来源于stack exchange,提问作者Elly
相关产品推荐
相关产品推荐

