Benutzer automatisch über mehrere Standorte anmelden

Wenn eine neue Website in meiner Installation für mehrere Standorte erstellt wird, füge ich den neuen Benutzer automatisch zur Hauptseite hinzu (da ich ihn für die Bestellung des Produkts benötige):

add_user_to_blog( 1, $user_id, 'customer' ); 

Ich möchte, dass sich die Benutzer automatisch bei allen ihren Websites anmelden, sobald sie sich bei einer der Websites anmelden, zu denen sie gehören.

Ich hoffte, die wp_login Aktion zu wp_login und einfach den auth_cookie für jede Seite zu setzen, zu der der Benutzer gehört, etwas in dieser Richtung:

 add_action('wp_login','autologin'); function autologin($user_login, $user) { $user_blogs = get_blogs_of_user($user->ID); foreach ($blogs as $blog) { switch_to_blog($blog->blog_id); wp_set_current_user ( $user->ID ); wp_set_auth_cookie ( $user->ID); restore_current_blog(); } } 

Das funktioniert aber nicht. Gibt es einen Workaround dafür?

Solutions Collecting From Web of "Benutzer automatisch über mehrere Standorte anmelden"

Sie können jeden Benutzer automatisch zu jedem Blog in Ihrem Netzwerk hinzufügen. Als Beispiel folgt die einfache function zum Hinzufügen einer Benutzer-ID zu einer Blog-ID. Wenn Sie eine Schleife über alle Websites erstellen und den Benutzer zu jedem Blog mit einer Rolle hinzufügen.

 function join_site( $user_id = 0, $blog_id = 0, $role = 'editor' ) { if ( 0 === $user_id ) return false; if ( 0 === $blog_id ) return false; if ( ! is_user_logged_in() ) return false; if ( ! is_user_member_of_blog( $user_id, $blog_id ) ) add_user_to_blog( $blog_id, $current_user->ID, $role ); } 

Sie können diese function im Register eines Benutzers oder auch im Login ausführen. Auf dem Register ist kleiner in der performance, nur eine Anfrage nach der Registrierung, nicht jede Anmeldung. Aber die function überprüft, ob der Benutzer ein Teil des Plugins ist, mit Hilfe von is_user_member_of_blog() .

Der Vorteil ist, dass jeder Benutzer ein echter Teil des Blogs ist, vielleicht mit verschiedenen Rollen. Das Ergebnis ist, dass Sie alle Möglichkeiten haben, auch für andere Plugins functionen auszuführen.

Für die Anmeldung sollten Sie die Konstante so einstellen, dass immer derselbe Cookie definiert wird.

define( 'COOKIE_DOMAIN', '' );

Das gibt den Benutzern die Möglichkeit, sich an jeder Site des Netzwerks anzumelden, wenn der Benutzer der Site hinzugefügt wird. Für mehr in diesem Zusammenhang siehe dieses q / a .