从登录页面

时间:2017-11-05 09:27:11

标签: php wordpress wpml

我正在使用WordPress和WPML(翻译插件WPML)构建一个双语网站,也用于处理我使用Theme my login的登录和注册,但由于它与WPML不兼容,我必须找到一个替代方案(尝试清理登录),但仍然没有运气。

我遇到主题登录的问题;它不支持两种语言的模板只有英语部分(另一种语言是阿拉伯语),而使用clean-login你不能修改它的模板(而我需要添加一些字段到用户注册)。

最后,我按照本link中的教程构建了自己的登录和注册插件,我现在面临的问题是,每次登录时,我都会被重定向到用户配置文件(这是正确的行为),但它不是保持登录页面中的相同语言,而是使用默认语言重定向到用户配置文件,尽管我尝试从阿拉伯语登录页面登录。

我为语言重定向问题尝试了几个修复程序;比如试图通过custom function使用wp语言环境过滤器修改语言环境,或者使用$ _GET [' lang']上的条件来修改语言环境,遗憾的是没有任何效果。

我尝试使用$ _GET [' lang']参数尝试的各种解决方案的示例; 在自定义插件类中设置公共变量($ site_lang):

public $site_lang;
public function __construct() {

    global $sitepress;
    $current_lang = $sitepress->get_current_language();

    if ( isset($_GET['lang']) && $_GET['lang'] == 'ar'){
        $this->site_lang = 'ar';
    }else{
        $this->site_lang = 'en_US';
    }
}

通过插件WP_SESSION

使用会话的另一种变体
global $sitepress;
$current_lang = $sitepress->get_current_language();
$wp_session = WP_Session::get_instance(); 
$wp_session['act_lang'] = 'ar';
if (!isset($_GET['lang'])){
    $wp_session['act_lang'] = 'en';
}else{
    $wp_session['act_lang'] = 'ar';
}
$this->site_lang = $wp_session['act_lang'];

以及注册错误功能的重定向,这是处理重定向的众多功能之一,我将其作为一个示例,说明我如何使用公共变量进行重定向

public function maybe_redirect_at_authenticate( $user, $username, $password ) {

    if( $_SERVER['REQUEST_METHOD'] === 'POST' ) {

      $login_url = ($this->site_lang == 'ar') ? site_url( 'تسجيل-الدخول/?lang=ar' ) 
      : home_url( 'member-login' );
      $login_url = add_query_arg( array('login' => $error_codes), $login_url );
      wp_redirect( $login_url );

    }
}

如果有人有解决方案如何在重定向后保持语言相同,我真的很感激帮助。

0 个答案:

没有答案