Ограничить некоторые страницы в WordPress по стране - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть несколько продуктов ( WooCommerce ), которые доступны для всех стран.

В связи с тем, что два товара заключены по контракту с дистрибьютором, мы должны ограничить продажу только двух товаровза пределами США.

Эти два продукта не должны отображаться вообще, если они пытаются получить доступ через США.

Я пробовал пару плагинов и один полуработал.

Она отключает кнопку добавления в корзину, но я бы предпочел просто удалить продукт с сайта, но только если к сайту обращаются из США.

Повсюду другие смогут увидеть продукты.

1 Ответ

0 голосов
/ 11 сентября 2018

Вы можете использовать класс 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 и измените идентификаторы продуктов, и все готово.

код протестирован с темой StoreFront.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...