【问题标题】:Wordpress site, URL to specified currency disables currency selectorWordpress 网站,指定货币的 URL 禁用货币选择器
【发布时间】:2020-04-01 13:06:39
【问题描述】:

我有一个多币种 wordpress 网站(使用 WPML 插件),我需要一种方法来以指定货币创建指向特定产品的链接。我发现了这个可以用于这个目的的“钩子”:wcml_client_currency。作为其中的一部分,我将此代码添加到我的子 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 链接然后浏览到我网站上的另一个页面时,货币保持我选择的那个并且字符串从 URL 中消失,现在可以使用正常的货币切换器。

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

【问题讨论】:

    标签: php wordpress url hook-woocommerce wpml


    【解决方案1】:

    其实我自己也想出了答案。如果其他人有兴趣,我会发布解决方案:

    不要在 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 );
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      • 1970-01-01
      • 2013-10-10
      • 2014-08-01
      • 2019-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多