Как добавить несколько ссылок в партнерский товар?

Ссылка скопирована
1 ответ

Требуется на странице товара по кнопке КУПИТЬ отправлять посетителя на разные ссылки в зависимости от геолокации посетителя.
Плагин геолокации есть, кастомная кнопка с шоркодом геолокации html работает прямо в описании:
[geot country="BY"]КУПИТЬ СЕЙЧАС[/geot]
[geot exclude_country="BY"]КУПИТЬ СЕЙЧАС[/geot]
Но нужно сделать это же, но в функционале внешнего/партнерского товара.

Дополнительно:

Ответы:

Использовать плагин геолокации, который умеет это делать. Или написать свой.

Или применить костыль - шорткоды поместить например в описание (или кастомное поле), а ссылку вырезать в шаблоне/скрыть стилями.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Backend-редакция Ответ

Для внешнего/партнёрского товара 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);

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.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно