到目前为止,我已经集成了一个多站点wordpress,它在一个wordpress安装中使用了4个主要的子域模板: college.mysite.com | jobs.mysite.com | advisors.mysite.com | answers.mysite.com
wp用户只需要登录一次,并且他们可以立即访问任何wp模板。
然而,我想要实现的是比这更复杂的。我不希望新用户和现有成员使用wordpress作为他们访问私人内容的主要用户界面。
事实上,我已经完全禁用了注册和隐藏wp登录。我想要一个更安全和更少公开的注册/登录。
对于这种情况,我希望wordpress忽略默认的登录凭据,而使用从同一个wordpress数据库中提取的自定义数据库表名和hashmethod。
例如,我有一个名为: humhub的yii平台。对于使用wordpress的用户,他们需要通过humhub登录,并让wp读取数据库表名: user而不是wp_users。
由于humhub使用: user_password而不是wp_users (user_pass)中的默认值,因此需要读取辅助数据库名称以获取密码
我已经尝试将yii框架与wordpress集成,我已经尝试在yii框架内进行调整,以便它分别读取两个数据库,但这比通过更改wordpress文件中的默认登录表名称来重定向wp登录凭据要复杂得多,请帮助我。
发布于 2015-10-23 21:44:48
让我们假设您有一些唯一的标识符,这样一个用户就不会意外地与另一个用户发生冲突(在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
}然后,他们使用cookies等登录到WordPress,而不会有任何标头干扰HumHub
注意-上面的方法可能不起作用,因为WordPress和YII/HumHub之间存在名称冲突。如果是这种情况,你会得到一个包含冲突细节的php错误,并将不得不尝试其他东西(例如Oauth插件)。
https://stackoverflow.com/questions/33303105
复制相似问题