修改WooCommerce代码:仅对带标签产品向境外显示价格
实现指定标签产品对英国境外用户显示价格的代码
修改后的代码会先判断用户所在国家:如果是英国(GB),正常显示所有产品价格;如果是境外用户,仅当产品带有指定标签时才显示价格,否则隐藏。
/** 仅允许带指定标签的产品向英国境外用户显示价格 */ add_filter( 'woocommerce_get_price_html', 'country_geolocated_based_hide_price', 10, 2 ); function country_geolocated_based_hide_price( $price, $product ) { // 定义允许境外显示价格的产品标签(替换为你实际使用的标签slug) $allowed_tag = 'price-visible-overseas'; // 获取用户地理位置信息 $geo_instance = new WC_Geolocation(); $user_geodata = $geo_instance->geolocate_ip(); $country = $user_geodata['country']; // 逻辑判断:英国用户正常显示;境外用户需产品带指定标签才显示价格 if ( $country === 'GB' ) { return $price; } else { // 检查产品是否包含指定标签 if ( has_term( $allowed_tag, 'product_tag', $product->get_id() ) ) { return $price; } else { return ''; } } } /** 结束价格控制逻辑 */
关键说明:
- 你需要把
$allowed_tag的值替换为你实际使用的产品标签slug(不是标签名称),比如你创建了一个叫“境外可见价格”的标签,slug可能是visible-price-abroad,就把变量改成这个值。 has_term函数会检查产品是否属于指定的产品标签,确保只有带标签的产品才对境外用户显示价格。- 原有的地理位置判断逻辑保留,确保英国本土用户不受影响。
内容的提问来源于stack exchange,提问作者Jet0o
相关产品推荐
相关产品推荐

