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

В этом уроке вы узнаете, как работать со встроенным функционалом геолокации в WooCommerce, а также познакомитесь с парой хуков.

Согласно заголовку поста я должен показать вам, как полностью скрывать товар с сайта, но давайте заодно рассмотрим и случай, как делать его невозможным для покупки. И в этом нам помогут фильтр-хуки:

  • woocommerce_product_is_visible – видимый/невидимый,
  • woocommerce_is_purchasable – доступный/не доступный для покупки.

Также в самом шаблоне можно написать где-нибудь «недоступно в вашей стране». О том, как работать с темой WooCommerce – это отдельная история и об этом у меня на сайте даже есть видеокурс.

А теперь готовый код для вашего файла functions.php:

add_filter( 'woocommerce_product_is_visible', 'truemisha_product_by_country', 25, 2 );
 
function truemisha_product_by_country( $is_visible, $product_id ){
 
   $location = WC_Geolocation::geolocate_ip();
 
   if ( 'AQ' == $location['country'] && 14 == $product_id ) {
      $is_visible = false;
   }
   return $is_visible;
 
}
  • В этом примере код AQ – Антарктика, скрываем товар с ID 14 только для неё, полный список двухбуквенных ISO кодов стран можете найти на википедии. Трёхбуквенные работать не будут!
  • Для хука woocommerce_is_purchasable ситуация будет немного отличаться, потому что второй параметр функции – объект товара, а не ID, так что нам придётся дополнительно получить ID товара при помощи $product->get_id().
  • Хотите скрыть несколько товаров? Тогда можете использовать это условие: in_array( $product_id, array( 14, 25 ) ).

Миша

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

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

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

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

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

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

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