在搜索了许多资源后,我现在找到了它:
function lang_support() {
return array(\'en\',\'fr\'); // Add your support lang-code (1st place is a default)
}
function rewrite_lang(){
$langs = lang_support();
foreach($langs as $lang) {
add_rewrite_endpoint($lang,EP_PERMALINK|EP_PAGES|EP_ROOT|EP_CATEGORIES);
}
}
add_action(\'init\',\'rewrite_lang\');
function lang(){
global $wp_query;
$langs = lang_support();
$lang_r = "";
foreach($langs as $lang) {
if(isset($wp_query->query_vars[$lang])) {
$lang_r = $lang;
$_SESSION[\'lang\'] = $lang_r;
}
}
if(in_array($lang_r,$langs)) {
return $lang_r;
} else {
return $langs[0];
}
}
function init_session(){session_start();}
add_action(\'init\',\'init_session\',1);
function lang_session() { // Redirect by JS if session is set
$url_lang= basename($_SERVER[\'REQUEST_URI\']);
if(!in_array($url_lang,lang_support()) && isset($_SESSION[\'lang\'])) {
if(!is_404()) {
wp_redirect(currentURL().$_SESSION[\'lang\'],301);
exit;
}
}
}
add_action(\'wp_head\',\'lang_session\');
function output_buffer() {ob_start();}
add_action(\'init\',\'output_buffer\');
function currentURL() {
$pageURL=(@$_SERVER["HTTPS"]=="on")?"https://":"http://";
if($_SERVER["SERVER_PORT"]!="80"){
$pageURL.=$_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
}else{
$pageURL.=$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
将此代码添加到
functions.php
.
After added code 转到
wp-admin/options-permalink.php
然后按
Save Changes
因此,现在您可以在模板中检查/使用lang代码,如。。
<?php echo lang();?>
或
if( lang() === "en" )
示例工作URL和示例代码:
http://domain.com/ <-- "en"
http://domain.com/en/ <-- "en"
http://domain.com/fr/ <-- "fr"
http://domain.com/es/ <-- "en" (coz , "es" code not set)
http://domain.com/mypage/ <-- "en" (work with "page")
http://domain.com/mypage/fr/ <-- "fr"
http://domain.com/mypage/es/ <-- "en" (coz , "es" code not set)
http://domain.com/mypost/ <-- "en" (work with "post")
http://domain.com/mypost/fr/ <-- "fr"
http://domain.com/mypost/es/ <-- "en" (coz , "es" code not set)
更好的想法/错误修复程序/发现错误+错误?
https://gist.github.com/l2aelba/5244912