Создавая интернет-магазин на woocommerce столкнулся с небольшой задачкой. Я использую специализированную тему оформления Virtue, которая хорошо подходит для woocommerce.
Проблема с внешними продуктами Woocommerce
В ассортименте магазина, кроме прочего, имеются партнерские товары. Это такой вид товара, который вы не продаете напрямую, а отправляете покупателя на сайт производителя товара, где он совершает покупку, а вам начисляется вознаграждение в виде процента от продаж. Так вот суть задачки была в том, что при нажатии кнопки купить на моём сайте совершался переход на сайт продавца в том же окне, уводя таким образом посетителя с сайта моего магазина.
Для решения этой проблемы в репозитории WordPress существует специальный плагин WooCommerce Improved External Products. Однако при его использовании возникла проблема. Дело в том, что название кнопки у внешнего (партнерского) товара задается вручную в свойствах товара. Если название указано по русски, то на странице со списком товаров название кнопки перекодировалось плагином в «кракозяблы».
Поскольку кнопка купить это по сути просто ссылка, то достаточно добавить параметр target=»_blank» в файлах темы отвечающих за вывод кнопки на странице товара и на странице со списком товаров. Чтобы исправить это пришлось отредактировать 2 файла темы Virtue.
Первый файл отвечает за вывод кнопки купить на странице товара. Находится он в папке wp-content/themes/virtue/woocommerce/single-product/add-to-cart/external.php
Второй файл отвечает за вывод снипета товара в общем списке товаров категории. Находится он в папке wp-content/themes/virtue/woocommerce/loop/add-to-cart.php
Дочерняя тема Virtue для внешних товаров
Для пущего удобства я сделал дочернюю тему для Virtue, чтобы не потерять эти изменения при обновлении темы. Предлагаю скачать её с моего сайта.
Добавлено 08.07.2021
Недавно я перешел на использование коммерческой темы Bono и доработал эти изменения с учетом новой темы, которая позволяет из коробки так же маскировать ссылки от поисковых систем. Подробнее можно почитать тут.
Помогло! Спасибо!
wp-content/plugins/woocommerce/templates/single-product/add-to-cart/
и
wp-content/plugins/woocommerce/templates/loop/