我有一个多语言内容(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),或者可能需要一种完全不同的方法。
如果有人能帮我解决这个问题,那就太棒了!
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 );
}
}