WooCommerce根据客户账单国家/地区修改商品价格
根据账单国家/地区调整商品价格(兼容所有商品类型)
原代码利用woocommerce_get_price钩子实现了针对账单国家的价格换算,但仅支持简单商品,无法覆盖可变商品(如带规格、属性的产品)。以下是适配所有商品类型的优化版本:
// 使用更现代的钩子,兼容所有商品类型 add_filter('woocommerce_product_get_price', 'return_custom_price_by_country', 10, 2); add_filter('woocommerce_product_variation_get_price', 'return_custom_price_by_country', 10, 2); function return_custom_price_by_country($price, $product) { // 仅在结账页面生效 if (!is_checkout()) { return $price; } // 目标国家代码数组(可按需添加更多) $target_countries = array('US'); $customer_billing_country = WC()->customer->get_billing_country(); // 检查客户账单国家是否在目标列表中 if (in_array($customer_billing_country, $target_countries)) { // 执行价格换算逻辑(示例:原价格/260*1.25,可按需修改) return ($price / 260) * 1.25; } // 非目标国家返回原价格 return $price; }
关键优化点:
- 改用
woocommerce_product_get_price和woocommerce_product_variation_get_price钩子,同时覆盖简单商品和可变商品的子变体 - 移除冗余全局变量,改用官方推荐的
WC()全局对象调用客户信息 - 逻辑前置判断结账页面,避免非必要计算
- 变量命名更语义化,提升代码可读性
内容的提问来源于stack exchange,提问作者Carl
相关产品推荐
相关产品推荐

