wp_set_auth_cookie未登录用户

时间:2017-03-03 06:03:47

标签: php wordpress login buddypress

我正在尝试向bp_core_activated_user添加一个函数,我想让它执行以下操作:

  1. 激活用户
  2. 登录用户
  3. 将用户重定向到其个人资料编辑屏幕
  4. 我对1和3都没有任何问题,但是由于第二步不起作用,所以它不会正确地执行#3。

    这是我的代码示例

    function auto_login_activation($user_id, $key, $user) {
    $bp = buddypress();
    $bp->activation_complete = true;
    //now login and redirect
    
    $user = get_user_by( 'id', $user_id ); 
    if( $user ) {
        wp_set_current_user( $user_id, $user->user_login );
        wp_set_auth_cookie( $user_id );
    }
    
    bp_core_redirect( bp_core_get_user_domain( $user_id ) .$bp->profile->slug .'/edit/' );
    }
    add_action( 'bp_core_activated_user', 'auto_login_activation', 0, 3 );
    

    如果我禁用重定向,它会在我的屏幕上显示为已登录(将显示“注销”,并隐藏“登录和注册”)但是当我转到仅适用于登录用户的页面时,它表明我是退出。

    我知道第1步正在运行,因为用户会在激活时收到自动欢迎电子邮件。第2步是它失败的地方,第3步,我在代码中的其他位置使用bp_core_redirect而没有问题 我一直在为此目的使用插件,但它也停止工作,基本上是相同的代码。

1 个答案:

答案 0 :(得分:2)

您需要使用wp_login动作挂钩:

do_action('wp_login','username','user_email');
wp_set_current_user('user_id');
wp_set_auth_cookie('user_id');
wp_redirect('url');