Wie Benutzer nach dem Login basierend auf ihrer Rolle in WordPress weitergeleitet werden
2022-02-14•2 Minuten Lesezeit
Wenn Ihre WordPress-Site/Ihr Projekt erfordert, dass Benutzer nach erfolgreichem Login basierend auf ihren Rollen auf verschiedene Seiten weitergeleitet werden, können Sie eines der folgenden Plugins verwenden:
- https://wordpress.org/plugins/role-based-redirect/
- Dokumentation: https://wordpress.org/plugins/role-based-redirect/
- https://wordpress.org/plugins/peters-login-redirect/
- Dokumentation: https://loginwp.com/docs/
Was ist, wenn Sie die Anzahl der Plugins gering halten und die Weiterleitung mit benutzerdefiniertem Code durchführen möchten?
Sie können einen Schnipsel wie den folgenden verwenden (Sie können den Code in die Datei functions.php oder in ein vorhandenes benutzerdefiniertes Plugin einfügen):
/**
* Benutzer nach dem Login weiterleiten.
* @param $redirect_to
* @param $request
* @param $user
* @return mixed|string|void
*/
function my_site_login_redirect( $redirect_to, $request, $user ) {
if ( isset( $user->roles ) && is_array( $user->roles ) ) {
if ( in_array( 'administrator', $user->roles ) || in_array( 'editor', $user->roles ) ) {
$redirect_to = admin_url();
} else if ( in_array( 'customer', $user->roles ) ) {
$redirect_to = home_url( '/shop/' );
} else {
$redirect_to = home_url('/shop');
}
}
return $redirect_to;
}
add_filter( 'login_redirect', 'my_site_login_redirect', 10, 3 );
Eine kurze Erklärung zum Code
Der Code implementiert den login_redirect Filter
Der Code prüft, ob der Benutzer die Rolle Administrator oder Editor hat. Wenn ja, wird der Benutzer zur Admin-Dashboard-Seite weitergeleitet. Wenn der Benutzer die Rolle vip_customer hat, wird der Benutzer zur Seite /custom-dashboard weitergeleitet. Alle anderen Benutzer werden zur Seite /shop weitergeleitet.