如何为wordpress使用不同的登录/注册机制

如何为wordpress使用不同的登录/注册机制,wordpress,yii,login,credentials,Wordpress,Yii,Login,Credentials,到目前为止,我已经集成了一个多站点wordpress,它在一个wordpress安装中使用了4个主要子域模板:college.mysite.com | jobs.mysite.com | advisors.mysite.com | answers.mysite.com wp用户只需登录一次,他们就可以立即访问任何wp模板 然而,我想要实现的是比这更复杂的一点。我不希望新用户和现有成员使用wordpress作为他们访问私人内容的主要用户界面 事实上,我已经完全禁用了注册和隐藏wp登录。 我想要一个

到目前为止,我已经集成了一个多站点wordpress,它在一个wordpress安装中使用了4个主要子域模板:college.mysite.com | jobs.mysite.com | advisors.mysite.com | answers.mysite.com

wp用户只需登录一次,他们就可以立即访问任何wp模板

然而,我想要实现的是比这更复杂的一点。我不希望新用户和现有成员使用wordpress作为他们访问私人内容的主要用户界面

事实上,我已经完全禁用了注册和隐藏wp登录。 我想要一个更安全、更少公开的注册/登录

对于这种情况,我希望wordpress忽略默认的登录凭据,而是使用从同一wordpress数据库中提取的自定义db表名和hashmethod

例如,我有一个名为:humhub的yii平台。 对于使用wordpress的用户,他们需要通过humhub登录,并让wp读取db表名: 用户而不是wp_用户

需要为密码读取辅助数据库名称,因为humhub使用: 用户密码,而不是wp_用户中的默认值(用户密码)

我曾尝试将yii框架与wordpress集成,我曾尝试在yii框架内进行调整,使其分别读取两个数据库,但这远比通过更改wordpress文件中的默认登录表名称来重定向wp登录凭据复杂得多,
请帮助我,

让我们假设您有一些唯一的标识符,这样一个用户就不会意外地与另一个用户发生冲突(在YII/HumHub中)

您可以通过以下方式加载WordPress API

require_once("/path/to/wp-load.php");
//Found normally in the WordPress root directory alongside wp-config.php
然后,在HumHub中创建新用户时,您可以执行以下操作:

wp_create_user( $username, $password, $email ); 
//Where username is the unique identifier
//password is ideally a random hash
//email is their email if relevant
然后登录(假设您记住了用户名和密码!!)

然后,他们使用cookies等登录WordPress,没有任何头文件干扰HumHub

注意-如果WordPress和YII/HumHub之间存在名称冲突,则上述方法可能无效。如果是这种情况,您将得到一个包含冲突详细信息的php错误,并且必须尝试其他方法(例如Oauth插件)

$creds = array();
$creds['user_login'] = $username;
$creds['user_password'] = $password;
$creds['remember'] = true;
$user = wp_signon( $creds, false );
if ( !is_wp_error($user) ) {
    ob_start(); //flush buffers - otherwise login won't work or user gets redirected to dashboard
    $user_id = $user->ID;
    wp_set_current_user( $user_id, null );
    wp_set_auth_cookie( $user_id,true );
    do_action( 'wp_login', $username );
    ob_end_clean();
} else {
   //Handle the login error
}