我需要为我正在处理的WordPress多站点创建语言重定向功能。此重定向将取决于用户的浏览器设置。我想我可以在头文件中创建一个会话,以便在访问该站点时,该站点检查是否已经设置了会话,然后相应地重定向。代码放在header.php的顶部 -
$url = $_SERVER['REQUEST_URI'];
function redirect() {
$language = explode( ',', $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
switch( $language[0] ) {
case 'sv':
header( 'Location: /sv/' );
break;
case 'no':
header( 'Location: /no/' );
break;
case 'da':
header( 'Location: /da/' );
break;
}
}
if ( strlen($url) < 4 ) {
session_start();
if ( !isset($_SESSION[ 'language' ]) && empty($_SESSION[ 'language' ]) ) {
$_SESSION[ 'language' ] = true;
redirect();
}
}
如果我跳过Header位置并输出开关案例,我可以看到浏览器语言已被提取,但没有重定向。我是在正确的轨道上还是应该采取完全不同的方法?
答案 0 :(得分:0)
试试代码。使用您的域名而不是&#39; example.com&#39;
$url = $_SERVER['REQUEST_URI'];
function redirect() {
$language = explode( ',', $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
switch( $language[0] ) {
case 'sv':
wp_redirect('example.com/sv/');
exit();
break;
case 'no':
wp_redirect('example.com/no/');
exit();
break;
case 'da':
wp_redirect('example.com/da/');
exit();
break;
}
}
if ( strlen($url) < 4 ) {
session_start();
if ( !isset($_SESSION[ 'language' ]) && empty($_SESSION[ 'language' ]) ) {
$_SESSION[ 'language' ] = true;
redirect();
}
}