WooCommerce加购链接如何设置加购时应用促销价而非标准价
WooCommerce 加购链接专属应用促销价实现方案
WooCommerce 原生加购链接不支持直接携带参数自动应用促销价,你可以通过添加自定义参数+挂载系统钩子的方式实现需求,不会影响产品详情页的原价展示规则,具体操作如下:
步骤1:调整加购链接格式
在原有加购链接末尾添加自定义标识参数apply_sale=1,调整后链接如下:
https://yourdomain.com/?add-to-cart=25&apply_sale=1
步骤2:添加功能代码
将以下代码复制到当前WordPress主题的functions.php文件末尾,或者自定义功能插件的代码文件中即可生效:
// 加购时存储自定义标识到购物车项元数据 add_filter('woocommerce_add_cart_item_data', function($cart_item_data, $product_id) { if (isset($_GET['apply_sale']) && $_GET['apply_sale'] == 1) { $cart_item_data['use_sale_price'] = true; // 避免不同加购方式的同商品被合并 $cart_item_data['unique_key'] = md5(microtime().rand()); } return $cart_item_data; }, 10, 2); // 购物车结算时对带标识的商品应用促销价 add_action('woocommerce_before_calculate_totals', function($cart) { if (is_admin() && !defined('DOING_AJAX')) return; foreach ($cart->get_cart() as $item) { if (isset($item['use_sale_price']) && $item['use_sale_price']) { $sale_price = $item['data']->get_sale_price(); if ($sale_price) $item['data']->set_price($sale_price); } } }); // 产品详情页仅展示常规售价,隐藏促销价 add_filter('woocommerce_get_price_html', function($price_html, $product) { // 仅针对ID为25的产品生效,可删除该判断适配所有产品 if (is_product() && $product->get_id() == 25) { $regular_price = wc_get_price_to_display($product, ['price' => $product->get_regular_price()]); return wc_price($regular_price) . $product->get_price_suffix(); } return $price_html; }, 10, 2);
注意事项
- 需提前在产品后台编辑页设置好对应产品的促销价,代码会直接读取你已配置的促销价,不会接受前端自定义传价,无恶意改价安全风险
- 修改代码后需清空WordPress站点缓存和浏览器缓存再测试
- 只有走带
apply_sale=1参数的加购链接才会触发促销价,直接在详情页加购仍会使用常规售价
内容的提问来源于stack exchange,提问作者Greenhoe
相关产品推荐
相关产品推荐

