Сайт Wordpress, URL к указанной валюте отключает выбор валюты - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть мультивалютный веб-сайт WordPress (с использованием плагина WPML), мне нужен способ сделать ссылку на указанный c продукт в указанной валюте. Я нашел этот «крючок», который можно использовать для этой цели: wcml_client_currency. Как часть этого, я добавил этот код в мои дочерние функции. php file:

add_action( 'wcml_client_currency', 'currency' );
function currency( $current_currency ) {

    $currency = isset( $_GET['currency'] ) ? esc_attr( $_GET['currency'] ) : $current_currency;

    return strtoupper( $currency );
}

Это работает частично. Я могу использовать URL-адрес mysite.com/?currency=EUR и перейти на страницу с валютой, выбранной в евро. Однако этот код отключает виджет выбора валюты, который есть у меня на сайте. Поэтому посадка на этой странице больше не меняет валюту, когда вы используете обычный селектор валют.

Кажется, проблема в двух противоречивых данных URL. т. е. с помощью приведенного выше кода я добавляю это «? currency = EUR», но селектор валют автоматически добавляет это «wcmlc = GBP» в URL. Когда оба появляются в URL, последний не работает.

Когда я использую URL-ссылку "? Currency = EUR" и затем перехожу на другую страницу на моем сайте, валюта остается той, которую я выбрал, и строка исчезает из URL, теперь можно переключать обычный валютный переключатель используемый.

Есть ли какое-либо исправление кода, которое я могу сделать с приведенным выше кодом, который будет отображать запрашиваемую валюту, но удаляет строку из URL? или какой-то другой способ решения этой проблемы?

1 Ответ

0 голосов
/ 01 апреля 2020

Я сам разобрался с ответом. Если кому-то еще будет интересно, я опубликую решение:

вместо использования «currency = EUR» в URL, используйте «wcmlc = EUR в URL», это изменит фактический селектор валюты и не будет С этим все работает.

Код, который я использовал:

add_action( 'wcml_client_currency', 'wcmlc' );
function wcmlc( $current_currency ) {

    $wcmlc = isset( $_GET['wcmlc'] ) ? esc_attr( $_GET['wcmlc'] ) : $current_currency;

    return strtoupper( $wcmlc );
}
...