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

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

Миша

В последние годы я долго не знал, что мне делать с сайтом misha.blog, ведь он практически не приносит никакого профита, но недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.