wayforpay / Word-Press-Woocommerce

20 stars 21 forks source link

Функция getCallbackUrl не учитывает языковую версию сайта #37

Open broslavski opened 6 months ago

broslavski commented 6 months ago

Здравствуйте. В файле woocommerce-gateway-wayforpay.php есть следующая функция getCallbackUrl:

private function getCallbackUrl($service = false)
        {
            $redirect_url = ($this->redirect_page_id == "" || $this->redirect_page_id == 0) ? get_site_url() . "/" : get_permalink($this->redirect_page_id);
            if (!$service) {
        if (
            isset($this->settings['returnUrl_m']) &&
            trim($this->settings['returnUrl_m']) !== ''
        ) {
            return trim($this->settings['returnUrl_m']);
        }
                return $redirect_url;
            }
            return add_query_arg('wc-api', get_class($this), $redirect_url);
        }

Эта фукнция передаёт в WayForPay returnUrl, но она не учитывает языковую версию сайта, с которой был сделан заказ. К примеру, если заказ оформлялся на странице /uk/checkout, то returnUrl передаётся следующий: /?key=wc_order_XXXXXXXXXXXXX&order=XXXXX, т.е. пользователь попадает на страницу сайта с уже чужим для себя языком.

Как это можно исправить, если, к примеру, мультиязычность на сайте реализуется при помощи плагина Polylang и текущую версию сайта можно узнать при помощи функции $language = pll_current_language();.