В этом уроке вы узнаете, как работать со встроенным функционалом геолокации в 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; }
woocommerce_is_purchasable
ситуация будет немного отличаться, потому что второй параметр функции – объект товара, а не ID, так что нам придётся дополнительно получить ID товара при помощи $product->get_id()
.in_array( $product_id, array( 14, 25 ) )
.Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Отличный пример! А как добавить несколько стран?
Спасибо! Можно например так
if ( ( 'AQ' == $location['country'] || 'IT' == $location['country'] ) && ...
Здравствуйте, столкнулся с проблемой такого характера - данный фильтр срабатывает только на устройстве с админ панелью моего сайта, если же тестировать на других устройствах все товары показываются (думал что проблема может быть в том что захожу на сайт как гость, но и после регистрации ситуация не изменилась), подскажите пожалуйста как это исправить?