在某些情况下,我们正在使用WordPress作为框架为应用程序的新用户构建一个激活系统。我们有一个插件驱动我们的大多数交互,所有这些代码都驻留在这个插件中。
当新用户注册时,会通过电子邮件向他们发送一个激活链接,单击该链接后,会将他们发送到激活页面。当他们保存他们的详细信息时,我们希望用适当的元数据创建用户,并将他们重定向到自定义路由模板,该模板将他们发送到他们的个人子网站。
我们有新创建用户的用户名和密码,因此我们可以使用wp_signon(). 我们有一个Registration\\u Model类,它在其他地方实例化。我们启动登录过程的类方法就是我想调用add\\u action的地方。
public function sign_user_in() {
add_action( \'init\', array( $this, \'auto_sign_in\') );
}
我们处理登录的方法如下所示,但请注意,我已经测试了该函数,以查看WordPress是否通过回显字符串来提示该操作,而字符串没有任何作用。
public function auto_sign_in()
{
// if ( ! is_user_logged_in() ) {
//determine WordPress user account to impersonate
$creds = array();
$creds[\'user_login\'] = $this->user->email;
$creds[\'user_password\'] = $this->user->password->one;
$creds[\'remember\'] = true;
$user = wp_signon( $creds, false );
if ( is_wp_error( $user ) ) {
echo $user->get_error_message();
} else {
wp_redirect(\'/_router/\'); exit;
}
}
}
看起来我真的被困在了没有运行的动作上,或者其他什么。add\\u操作是否可以从类构造函数以外的其他位置运行?非常感谢您的任何建议或帮助。
EDIT
我已将函数调整为使用
$this
而不是
__CLASS__
, 虽然我们在挂接“init”时仍然一无所获。作为一个测试,我使用了触发“shutdown”的最后一个钩子,我可以使用它向浏览器回显测试字符串。所以我知道有一大堆操作正在加载,所以我可能需要将add\\u操作移动到其他地方,以便更早地启动。