用PHP和Wordpress实现语言重定向
我需要为我正在处理的WordPress多站点创建一个语言重定向函数。此重定向将取决于用户的浏览器设置。我想我可以在头文件中创建一个会话,以便在访问站点时,站点检查会话是否已设置,然后相应地重定向。放在header.php顶部的代码-用PHP和Wordpress实现语言重定向,php,wordpress,redirect,browser,Php,Wordpress,Redirect,Browser,我需要为我正在处理的WordPress多站点创建一个语言重定向函数。此重定向将取决于用户的浏览器设置。我想我可以在头文件中创建一个会话,以便在访问站点时,站点检查会话是否已设置,然后相应地重定向。放在header.php顶部的代码- $url = $_SERVER['REQUEST_URI']; function redirect() { $language = explode( ',', $_SERVER['HTTP_ACCEPT_LANGUAGE'] ); switch( $lang
$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();
}
}
$url=$\u服务器['REQUEST\u URI'];
函数重定向(){
$language=explode(“,”,$”服务器['HTTP\u ACCEPT\u language']);
开关($language[0]){
案例“sv”:
标题('Location:/sv/');
打破
案件‘否’:
标题('位置:/no/');
打破
案例“da”:
标题('位置:/da/');
打破
}
}
if(strlen($url)<4){
会话_start();
if(!isset($_会话['language'])和空($_会话['language'])){
$\u会话['language']=true;
重定向();
}
}
如果我跳过标题位置,只输出开关大小写,我可以看到浏览器语言被提取,但没有重定向。我在这方面做得对吗?还是应该采取完全不同的方法?试试代码。请使用域名而不是“example.com”
$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();
}
}
$url=$\u服务器['REQUEST\u URI'];
函数重定向(){
$language=explode(“,”,$”服务器['HTTP\u ACCEPT\u language']);
开关($language[0]){
案例“sv”:
wp_重定向('example.com/sv/');
退出();
打破
案件‘否’:
wp_重定向('example.com/no/');
退出();
打破
案例“da”:
wp_重定向('example.com/da/');
退出();
打破
}
}
if(strlen($url)<4){
会话_start();
if(!isset($_会话['language'])和空($_会话['language'])){
$\u会话['language']=true;
重定向();
}
}
尝试设置标题的绝对路径,例如。而且,不需要!isset
因为您使用的是空的。谢谢。我试着设置一个绝对路径(也包括www),它在Chrome中工作,但Firefox和Safari都没有。。。我知道浏览器语言输出是不同的,我已经在我的代码中纠正了这一点。谢谢,但这根本不起作用。wp_-safe_重定向刚刚将我发送到网站上的随机页面(!)。我很好奇,使用wp_safe_重定向或头位置会有什么不同吗?是不是WP自己的路由系统导致了这种情况?随机页面意味着什么?是否不重定向到指定页面?