web-dev-qa-db-ja.com

ログアウトせずにユーザーロールを更新する方法

私は以下のプラグインを使ってワードプレスプロジェクトに取り組んでいます。

  • ウーコマース
  • ウーコマース製品ベンダー
  • WPジョブマネージャー
  • Wp Job Managerの製品

私は しようとしています/ - ユーザーロールをアップグレードします ジョブを追加した後、ユーザーはwp-adminにアクセスして自分の製品を編集できます。

これで、ユーザーは自分のベンダーを管理ダッシュボードにアップグレードできるようになりましたが、ジョブを初めて追加したときに自分の役割を更新してダッシュボードにアクセスするにはログイン/ログアウトする必要があるという問題があります。

ここで私が試したこと:

        $current_user = wp_get_current_user();

        //Code 1 : 
        $user_id = wp_update_user( array( 'ID' => $current_user->ID, 'role' => 'wc_product_vendors_manager_vendor' ) );

        //Code 2 : 
        $user = new WP_User( $current_user->ID );
        $user->remove_role( 'customer' );
        $user->set_role( 'wc_product_vendors_manager_vendor' );

        //Code 3 : ( this will make the user with 2 roles )
        $current_user->add_role( 'wc_product_vendors_manager_vendor' );

wp_cache_delete ...を削除してこれを実現することは可能ですか?ログイン/ログアウトせずにユーザーロールをアップグレードするための優れたソリューションを誰かが知っていますか?

ご協力ありがとうございます。

私はあなたが正しい軌道に乗っていると思います、wp_cache_deleteはついに私が自動ログインプラグインが働いている自動登録を得るのを助けたものでした...私はそこからこれを持っています:

wp_cache_delete($current_user->ID, 'users');
wp_cache_delete($current_user->user_login, 'userlogins');

その後、どのような役割を果たしたかを確認します。

$current_user = wp_get_current_user();
3
majick

変更後にユーザーにログインしてみましたか?

といった:

 wp_set_current_user( $current_user->ID, $current_user->user_login );

 wp_set_auth_cookie( $current_user->ID );

 do_action( 'wp_login', $current_user->user_login );
2
Shane