Как добавить несколько ссылок в партнерский товар?
Требуется на странице товара по кнопке КУПИТЬ отправлять посетителя на разные ссылки в зависимости от геолокации посетителя.
Плагин геолокации есть, кастомная кнопка с шоркодом геолокации html работает прямо в описании:
[geot country="BY"]КУПИТЬ СЕЙЧАС[/geot]
[geot exclude_country="BY"]КУПИТЬ СЕЙЧАС[/geot]
Но нужно сделать это же, но в функционале внешнего/партнерского товара.
Дополнительно:
Ответы:
Использовать плагин геолокации, который умеет это делать. Или написать свой.
Или применить костыль - шорткоды поместить например в описание (или кастомное поле), а ссылку вырезать в шаблоне/скрыть стилями.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для внешнего/партнёрского товара WooCommerce стандартно есть только одна external URL. Если нужно менять ссылку кнопки “Купить” по геолокации, это делается фильтром WooCommerce, который подменяет URL для external product, а не вставкой shortcode в описание товара.
Пример общей идеи:
add_filter('woocommerce_product_add_to_cart_url', function ($url, $product) { if (!$product || !$product->is_type('external')) { return $url; } $country = $_SERVER['HTTP_CF_IPCOUNTRY'] ?? ''; if ($country === 'BY') { $custom = get_post_meta($product->get_id(), '_external_url_by', true); return $custom ?: $url; } $custom = get_post_meta($product->get_id(), '_external_url_default', true); return $custom ?: $url; }, 10, 2);
Для этого нужно добавить к товару дополнительные поля: ссылка для BY, ссылка для остальных стран, возможно отдельные UTM. Поля можно сделать через ACF или через metabox WooCommerce.
Если у Вас уже есть shortcode
[geot], можно использовать его только для текста/блоков, но для URL кнопки лучше работать на уровне фильтра. Иначе получите ситуацию, где визуально кнопка одна, а реальная ссылка WooCommerce другая.Проверьте кэш: если страница товара кэшируется целиком, геозависимая ссылка может закэшироваться для первой страны и показываться всем. Для таких кнопок нужен фрагмент без кэша, AJAX-подстановка или геолокация на уровне CDN.