wordpress上有一个安装了wpml 插件的站点,用于 2 种语言本地化(可能还有更多)。
我想让 cookie 记住用户的语言 30 天(他自己通过 switcher 选择它wpml),如果用户从任何带有新链接的页面重新进入,那么他将始终被重定向到本地化他设置了饼干。俄语是默认设置(ru)。
我在标签之前的最顶部写<!DOCTYPE html>了以下指令(我$_SERVER['HTTP_REFERER']用它来确定用户是使用了开关还是重新打开了页面):
<?php
$default_lang = apply_filters( 'wpml_default_language', null );
if($default_lang!= ICL_LANGUAGE_CODE) {
setcookie('language', ICL_LANGUAGE_CODE, time() + 30 * DAY_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN);
}
if (isset($_COOKIE['language']) && $_COOKIE['language']!= ICL_LANGUAGE_CODE) {
if($_SERVER['HTTP_REFERER']) {
setcookie('language', ICL_LANGUAGE_CODE, time() + 30 * DAY_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN);
}
else {
$wpml_permalink = apply_filters( 'wpml_permalink', get_the_permalink() , $_COOKIE['language'] );
if(isset($wpml_permalink)) {
wp_redirect( $wpml_permalink );
exit;
}
}
} ?>
它在第一次访问(ru)并切换到另一个本地化(en)时效果很好,但是如果我使用 switch 返回到原始本地化(ru),那么当我使用旧链接(en)再次访问该站点时,用户再次被抛出到(en)页面,尽管他在之前的运行中使用了切换到(ru)。[我希望我已经清楚地描述了这个问题]
如何解决这个问题?
根据@Greg 发布的文章找到了解决方案
函数.php