按国家/地区限制WordPress中的某些页面

时间:2018-09-11 18:17:08

标签: wordpress .htaccess woocommerce

我有几种产品( WooCommerce ),可在所有国家/地区使用。

由于两种产品与分销商签订了合同,因此我们必须限制两种产品只能在美国以外的地方销售。

如果试图通过美国访问这两种产品,则根本不会显示它们。

我已经尝试了两个插件,并且有一个半成品。

它禁用了“添加到购物车”按钮,但是我宁愿只从网站上完全删除产品,但前提是要从美国访问该网站。

在其他任何地方都可以看到产品。

1 个答案:

答案 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主题进行了测试。