Wordpress 站点,URL 指定货币禁用货币选择器

Wordpress site, URL to specified currency disables currency selector

我有一个 multi-currency wordpress 网站(使用 WPML 插件),我需要一种方法来以指定货币为特定产品制作 link。我发现这个 "hook" 可用于该目的:wcml_client_currency。作为其中的一部分,我将此代码添加到我的 child functions.php 文件中:

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时,后者不起作用。

当我使用“?currency=EUR”URL link 然后浏览到我网站上的另一个页面时,货币保持我选择的货币并且字符串从 URL,现在可以使用正常的货币切换器了。

我是否可以对上面的代码进行任何代码修复,以显示请求的货币但从 URL 中删除字符串?或者这个问题的其他一些解决方法?

其实我自己想出了答案。如果其他人有兴趣,我将 post 解决方案:

而不是在 URL 中使用 "currency=EUR",而是在 URL 中使用“wcmlc=EUR”,这将更改实际的货币选择器并且不会否决它。有了它一切有效。

我使用的代码:

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

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

    return strtoupper( $wcmlc );
}