Сайт на WordPress 5.8.2, на котором установлен WooCommerce 3.4.8, собственно получается интернет-магазин по продажи какого то товара. Находясь на карточке товара, пользователь может на жать на кнопку «В корзину» и происходит переход пользователя в корзину с добавлением товара.
Данная функция настраивается в плагине WooCommerce, в админке, тоесть перенаправление пользователей в корзину.
А теперь о самой проблеме, которую надо решить. На сайте стоит мультиязычность (русский и украинский), и когда включена украинская версия а пользователь находится в карточки товара и делает добавление в корзину, то его перекидывает на русскую версию сайта.
Один из вариантов это исправить, это изменить редирект в корзину.
Изменение редиректа в корзину
Если проанализировать код плагина woocommerce, то можно найти что при редиректе используется фильтр woocommerce_add_to_cart_redirect, на вход которого подается урл и на выходе урл, куда перенаправлять.
Нам остается переопределит этот фильтр в свою пользу.
Открываем файл функции темы (functions.php), и добавляем туда следующий код
add_filter('woocommerce_add_to_cart_redirect', 'rain_add_to_cart_redirect'); function rain_add_to_cart_redirect(){ $url = pll__('/cart/'); return $url; }
во внутрь функции rain_add_to_cart_redirect, можно заложить любой другой код, главное чтоб на выходе был тот урл который вам нужен, и если надо, можно и условия вставить
if(isset( $_POST['add-to-cart'] )){ . . . }
Срабатывать при существовании определенной переменной в пост запросе