繁体   English   中英

如何为Wordpress使用其他登录/注册机制

[英]How can I use a different login/signup mechanism for wordpress

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

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

但是,我想实现的目标要比这复杂得多。 我不希望新用户和现有成员使用wordpress作为其访问私有内容的主要用户界面。

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

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

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

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

我尝试将yii框架与wordpress集成,我尝试在yii框架中进行调整,以便它分别读取两个数据库,但是它比通过更改默认登录表名称简单地重定向wp登录凭据要复杂得多。 wordpress文件,请帮助我,

假设您有一些唯一的标识符,以便一个用户不会与另一个用户意外碰撞(在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

然后登录(假设您记得用户名和密码!)

$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
}

然后使用Cookie等将它们登录到WordPress,而不会干扰HumHub

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM