web-dev-qa-db-fra.com

Comment mettre à jour le rôle d'utilisateur sans se déconnecter

Je travaille sur un projet wordpress avec les plugins suivants:

  • Woocommerce
  • Les fournisseurs de produits Woocommerce
  • Gestionnaire de travaux WP
  • Wp Job Manager produits

J'essaie de mettre à niveau le rôle d'utilisateur après l'ajout d'un travail, afin que l'utilisateur puisse accéder à wp-admin et modifier son propre produit.

L'utilisateur peut maintenant être mis à niveau vers son tableau de bord fournisseur mais le problème est qu'il doit se connecter/se déconnecter pour la première fois afin de mettre à jour ses rôles et pouvoir accéder au tableau de bord.

Voici ce que j'ai essayé:

        $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' );

Est-il possible d'y parvenir en supprimant le wp_cache_delete ... quelqu'un connaît-il une bonne solution pour mettre à niveau les rôles d'utilisateur sans se connecter/se déconnecter?

Merci pour votre aide!

4

Je pense que vous êtes sur la bonne voie, wp_cache_delete est ce qui m’a finalement aidé à obtenir une connexion automatique avec le plug-in de connexion automatique qui fonctionne ... j’ai ceci à partir de là:

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

Ensuite, voyez quels rôles vous obtenez après cela avec:

$current_user = wp_get_current_user();
3
majick

Avez-vous essayé de vous connecter après les modifications?

Tel que:

 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