环境描述:一个带有根网站example.com的Wordpress多站点和多个子域,如en.example.com,es.example ......
问题:如何根据浏览器的语言将用户带到正确的子域?
到目前为止发现的插件:Wordpress重定向描述包含以下内容:
WordPress插件,它从多站点的根站点重定向 项目到特定语言的网站。
请注意:此插件不允许根网站上的内容! 请仔细阅读此说明,看看这是否适合您。
似乎这个重定向插件是用于重定向到子文件夹,我是wordpress的新手,很久以前我用PHP做过一些事情,但它应该不会那么复杂我猜...
答案 0 :(得分:1)
您的体系结构错误,WordPress多站点不用于语言翻译,除非您希望为其他语言设置完全不同的设计/主题,您应该使用Polylang (Free)之类的插件,如果您使用子域名,则可以使用子域名你想要的!
但是回答你的问题,如果你继续使用当前的多站点架构,你会使用这样的函数:
function redirectOtherLanguages(){
if(!isReturningVisitor())
{
$domain = getDomain();
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
$newAddress = 'http://'.$lang.'.'.$domain.$_SERVER['REQUEST_URI'];
echo $newAddress; die();
header("Location: ".$newAddress);//include check session FR
}
}
function getDomain(){
$parts=explode('.', $_SERVER["SERVER_NAME"]);
$potentialSubDomain = array_shift($parts);
//print_r($parts); die();
if(!empty($parts)){
if(count($parts)>=2) return implode('.',$parts);
else return $_SERVER["SERVER_NAME"];
}
else return null;
}
//This function prevents redirecting returning users
function isReturningVisitor(){
if(empty($_COOKIE['returning_visitor']))
{
setcookie("returning", TRUE, time()+60*60*24*365); // Expires in a year
return false;
}
return true;
}
redirectOtherLanguages();
以下是您将遇到的其他一些问题: