[英]redirect main domain to subdomain manually select by visitor
我有两个wordpress网站。 一个安装在主域中,另一个安装在主域下的子域中。 我这样做是为了管理2种不同的语言。 我知道有太多插件可以在网站上管理多语言。 但我必须手动执行此操作。
但是现在我需要做一点工作。 我想在任何访客第一次访问我的主站点时显示通知。 在那里,我将提供2种语言选项供您选择。
Option-1 Language English for main domain. (example.com)
Option-2 Language Spanish for Sub domain. (sp.example.com)
当访问者选择Option-1
他将停留在main site(domain)
。 如果他选择Option-2
那么他将被重定向到another site(sub-domain)
,此后,每次访问时,它将自动发生
。 但是访问者可以手动从子域返回主域。
任何解决方案将不胜感激。 谢谢
我们可以通过Cookie来完成这项工作。 我假设您的默认登陆域是英语。
在英语域的functions.php中编写以下代码
add_action('init','is_new_visitor');
$is_new_visitor = false;
function is_new_visitor(){
check_new_visitor();
set_new_visitor();
}
function check_new_visitor(){
global $is_new_visitor;
//check if cookie set
if(isset($_COOKIE['new_visitor_lang']) &&
in_array($_COOKIE['new_visitor_lang'],array('en','sp'))){
$lang = $_COOKIE['new_visitor_lang']; // get cookie value
//if language is spanish then redirect user to spanish site
if($lang=="sp"){
wp_redirect('spanish lang domain');
exit;
}
}else{
//set global variable to true if it is new visitor
$is_new_visitor = true;
}
}
function set_new_visitor(){
// check the get param and redirect user to selected domain
if(isset($_GET['lang']) && in_array($_GET['lang'],array('en','sp'))){
setcookie( "new_visitor_lang", $_GET['lang'], time() + (365 * 24 * 60 * 60) );
if($lang=="sp"){
wp_redirect('spanish lang domain');
exit;
}
}
}
现在,您必须在其中显示链接,添加以下代码(header.php中的某些位置)
global $is_new_visitor;
if($is_new_visitor){
echo '<a href="?lang=en">English</a>';
echo '<a href="?lang=sp">Spanish</a>';
}
假设您已经有一个弹出窗口,询问他们要查看哪个版本,以及两个按钮或链接以将其带到相应的站点...您可以使用jQuery或纯JavaScript:
jQuery( document ).ready( function() {
var $days = 30;
var $date = new Date();
$date.setTime($date.getTime() + ($days * 24 * 60 * 60 * 1000));
var $expires = "; expires=" + $date.toGMTString() + '; path=/';
jQuery( '#id_of_english_button' )
.click( function( event ) {
document.cookie = 'language=english' + $expires;
});
jQuery( '#id_of_spanish_button' )
.click( function( event ) {
document.cookie = 'language=spanish' + $expires;
});
});
然后,您将可以使用一个PHP cookie变量: $_COOKIE['language']
使用DarkBee在评论中所说的内容,并做一个header('location : sub.domain.com');
如果他们的Cookie等于“西班牙语”,则将人们发送到子域。
/*this code write on your main site and the user will
automatically redirect to the subdomain */
if(!isset($_SESSION['lang'])
{
$_SESSION['lang']='visitor selected language';
}
if($_SESSION['lang']=="Option-2")
{
header("Location:url");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.