Как скрывать или отображать товары для пользователей из определённых стран

В этом уроке я хочу показать вам магию встроенного в WooCommerce класса WC_Geolocation, ведь по сути он не только определяет IP-адрес пользователя, но даже и страну, где этот пользователь находится.

Именно благодаря ему, а ещё фильтр-хуку woocommerce_product_is_visible мы и попробуем создать парочку геозависимых товаров.

Например вот так:

add_filter( 'woocommerce_product_is_visible', 'true_product_if_country', 25, 2 );
 
function true_product_if_country( $visible, $product_id ){
 
   $location = WC_Geolocation::geolocate_ip();
 
   if ( 'IT' === $location[ 'country' ] && 1234 === $product_id ) {
      $visible = false;
   }
   return $visible;
 
}

В коде выше мы:

  • Скрываем товар для пользователей из Италии, полный список кодов стран в википедии.
  • Также мы взяли определённый товар с ID = 1234, и тут такой момент, чтобы не хардкодить это каждый раз, вы можете прописать например чекбокс в настройках товара.
  • Код вставляем сюда.
  • Кроме того, обратите также внимание на хук woocommerce_is_purchasable, он более хардкорный, чем woocommerce_product_is_visible. Но, второй параметр у него не ID товара, а объект – тогда получаем ID при помощи $product->get_id().

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Комментарии — 3

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал