append currency to URL

时间:2020-07-02 作者:J.K.

我有一个多语言内容(WPML)和多种货币的wordpress网站。

我想要实现的是,我可以通过URL分配特定货币,然后该货币保持不变;选定的(&Q);直到/除非通过网站的前端货币选择器被否决。我将在电子邮件促销中使用这些URL,以他们需要的货币将客户发送到网站。

我已经了解了如何通过URL添加货币(示例URL=mysite.com/cart/?add to cart=123&wcmlc=EUR(其中123是产品ID))

我使用以下代码完成了此操作:

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

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

        return strtoupper( $wcmlc );
    }
此代码的工作原理是,客户使用URL设置的货币到达站点。但当客户现在开始浏览网站时,货币会变回默认货币。。。

我认为一个解决方案可能是;wcml=欧元;部分URL被附加到URL,但我不知道如何做。

我试图用我在这个网站上找到的这段代码做到这一点(I am Looking to append URL Parameter to all URLs) 但当我把它添加到我的子函数中时。php我的网站停止工作:

   function wprdcv_param_redirect(){
        if(isset($_COOKIE[\'wcmlc\']) and !$_GET[\'wcmlc\']){
            $location = esc_url(add_query_arg(\'wcmlc\', $_COOKIE[\'wcmlc\']));
            wp_redirect($location);
        }
    }
    add_action(\'template_redirect\', \'wprdcv_param_redirect\');
我不知道将wcmlc附加到URL上是否是解决方案(此外,如果客户希望更改货币,那么在这样做时,前端货币选择器仍应允许重写wcmlc),或者可能需要一种完全不同的方法。

如果有人能帮我解决这个问题,那就太棒了!

1 个回复
SO网友:J.K.

多亏了@mozboz,我找到了问题的答案。我将其张贴在此处,以防对其他人有所帮助:

Wordpress(用于多语言和多货币的WPML插件)使用cookie \\u wcml\\u dashboard\\u货币。我能够用以下代码设置cookie,这解决了我在浏览到其他页面后更改货币选择的问题。代码如下:

    add_action( \'init\', \'set_currency_cookie\' );
    
    function set_currency_cookie() {
        if (isset($_GET[\'wcmlc\'])) {
          $name = \'_wcml_dashboard_currency\';
          $id = $_GET[\'wcmlc\'];    
           setcookie( $name, $id, time() + 0, "/", COOKIE_DOMAIN );
        }
    }

相关推荐

Altered Media Library URLs

我有一个客户的网站,是在他们离开另一家代理机构后我找到的。该机构使用了一个专有主题和自己的自托管页面生成器,以防止其在除他们之外的任何其他托管环境中更新或编辑。它的另一个方面是重新映射主题的URL并上载目录。因此,例如,代替WP在中查找主题文件http://domain.com/wp-content/themes/…. 它在里面找他们http://domain.com/t/….同样,对于图像上载,也可以在http://domain.com/wp-content/uploads/…, 它在里面找他们http