2017-09-02 23 views
0

說明:一個WordPress的多站點與根網站example.com和多個子域像en.example.com,es.example ...WordPress的重定向到環境中的一個子域

問題:如何根據瀏覽器的語言讓用戶訪問正確的子域名?發現到現在爲止

插件:WordPress的重定向人描述包含以下內容:

WordPress插件從多站點 項目特定語言的網絡站點的根網站重定向。

請注意:這個插件不允許根站點上的內容! 請仔細閱讀本說明,看看它是否適合您。

似乎這重定向插件是重定向到子文件夾,我是一個新手,WordPress的,這是相當長的時間以前,我已經做了與PHP的東西,但它不應該那麼複雜我想..

回答

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(); 

這裏有一些其他的問題,你會遇到:

  1. 由於每種語言都是不同的網站,你需要複製每一篇文章,頁面等。
  2. 你會有問題,你的網站有其他子域名而不是語言本身,你無線請考慮使用聚lang或任何其他方法。
  3. 您還需要檢測該語言的頁面在重定向之前是否存在(避免不必要的404避免)。
  4. 您將需要指定數組中支持的語言列表,並且如果在陣列上找不到用戶語言,請指定默認語言。
  5. 等!!!!!!!!!!!!!!!!!!!!!
+0

非常感謝Alejandro提供的寶貴信息,您的方法建議似乎非常好。此外,我還讀到,像example.com/fr/de這樣的每個國家/語言的頂級域名將是更好的方法。但我不確定Polylang能否爲我服務,因爲不同站點的內容不同。我仍在尋找更多的建議,這個話題對我來說似乎是資本,而且在這個問題上有幾個帖子存在。 – udito

相關問題