我有几种产品( WooCommerce ),可在所有国家/地区使用。
由于两种产品与分销商签订了合同,因此我们必须限制两种产品只能在美国以外的地方销售。
如果试图通过美国访问这两种产品,则根本不会显示它们。
我已经尝试了两个插件,并且有一个半成品。
它禁用了“添加到购物车”按钮,但是我宁愿只从网站上完全删除产品,但前提是要从美国访问该网站。
在其他任何地方都可以看到产品。
答案 0 :(得分:1)
您可以使用WC_Geolocation
类来检测用户位置,然后通过修改产品查询来排除某些产品的显示。
因此您可以使用以下代码来获得所需的结果。
基于LoicTheAztec建议,我还进行了另一项检查,即用户是否登录并且他的国家/地区也是美国,那么无论他/她所在的位置如何,我们都应排除该产品。
function exclude_product_by_geoloacted_user_country($q)
{
$location = WC_Geolocation::geolocate_ip();
$country = $location['country'];
$exluded_product = [28, 27]; //you can add here the products that you want to exclude by id
if (is_user_logged_in() && WC()->customer->get_billing_country() == "US") {
$q->set('post__not_in', (array) $exluded_product);
return $q;
}
if ($country == "US") { //here you can specify the country code
$q->set('post__not_in', (array) $exluded_product);
}
return $q;
}
add_action('woocommerce_product_query', 'exclude_product_by_geoloacted_user_country');
将上面的代码放入functions.php
中,并更改产品ID,您就可以使用了。
代码已通过StoreFront主题进行了测试。