将主域重定向到由访问者手动选择的子域



我有两个wordpress网站。一个安装在主域,另一个安装在主域下的子域。我这样做是为了管理两种不同的语言。我知道有很多插件来管理多语言的网站。但是我必须手动操作。

但是现在我需要做一个小工作。我想显示一个通知,当任何访问者将访问我的主要网站的第一次。在这里,我将提供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),此后每次他访问

时都会自动发生这种情况。

主要站点(域)

。但是访问者可以手动从子域名返回到主域名。

任何解决方案都将受到高度赞赏。由于

假设你已经有一个弹出窗口询问他们想看哪个版本,以及两个按钮或链接,将他们带到适当的站点…你可以使用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等于'spanish',则将人们发送到子域名。

我们可以靠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>';
}
   /*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");
     }

最新更新