wake-up-neo.com

So aktualisieren Sie die Benutzerrolle ohne sich abzumelden

Ich arbeite an einem WordPress-Projekt mit folgenden Plugins:

  • Woocommerce
  • Woocommerce-Produktanbieter
  • WP Job Manager
  • Produkte von Wp Job Manager

Ich versuche, die Benutzerrolle zu aktualisieren nachdem ich einen Job hinzugefügt habe, damit der Benutzer auf den wp-admin zugreifen und sein eigenes Produkt bearbeiten kann.

Jetzt kann der Benutzer auf das Dashboard des Anbieters aktualisiert werden. Das Problem besteht jedoch darin, dass er sich beim ersten Hinzufügen eines Jobs anmelden bzw. abmelden muss, um seine Rollen zu aktualisieren und auf das Dashboard zugreifen zu können.

Hier was ich ausprobiert habe:

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

Ist es möglich, dies durch Löschen des Befehls wp_cache_delete ... zu erreichen? Kennt jemand eine gute Lösung, um Benutzerrollen ohne An-/Abmeldung zu aktualisieren?

Danke für deine Hilfe!

Ich denke, du bist auf dem richtigen Weg, wp_cache_delete hat mir schließlich geholfen, eine automatische Anmeldung mit dem Auto-Login-Plugin zu erhalten ... Ich habe folgendes von dort:

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

Dann sehen Sie, welche Rollen Sie danach bekommen mit:

$current_user = wp_get_current_user();
3
majick

Haben Sie versucht, sich nach Ihren Änderungen beim Benutzer anzumelden?

Sowie:

 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