Wir erstellen ein eigenes Custom Login Redirect Plugin
KI-generiertInhalt
Wie Sie ein WordPress Login Redirect Plugin erstellen – Eine Schritt-für-Schritt-Anleitung
Einleitung
Ein eigenes WordPress-Plugin zu entwickeln, ist ein hervorragender Weg, um Ihre Website individuell anzupassen und gleichzeitig wertvolle Kenntnisse über WordPress-Entwicklung zu sammeln. In diesem Beitrag zeigen wir Ihnen, wie Sie ein Login Redirect Plugin erstellen, das Benutzer nach dem Einloggen basierend auf ihrer Rolle zu bestimmten Seiten weiterleitet.
Mit dieser Anleitung werden Sie:
- Ein funktionsfähiges WordPress-Plugin schreiben
- Benutzer basierend auf ihrer Rolle umleiten
- Ein Admin-Menü zur Verwaltung der Weiterleitungen erstellen
Lassen Sie uns starten!
1. Die Plugin-Basis erstellen
Jedes WordPress-Plugin beginnt mit einer Datei im wp-content/plugins/-Verzeichnis. Erstellen Sie dort einen neuen Ordner custom-login-redirect und eine Datei custom-login-redirect.php.
Öffnen Sie die Datei und fügen Sie diesen Code hinzu:
<?php
/**
* Plugin Name: Custom Login Redirect
* Plugin URI: https://example.com
* Description: Leitet Benutzer nach dem Login je nach Rolle auf eine bestimmte Seite weiter.
* Version: 1.0
* Author: Dein Name
* Author URI: https://example.com
*/
if (!defined('ABSPATH')) {
exit; // Sicherheit: Direktzugriff verhindern
}
2. Benutzer nach dem Login umleiten
Nun implementieren wir die Kernfunktion des Plugins: Benutzer basierend auf ihrer Rolle weiterzuleiten. Dazu nutzen wir den wp_login Hook.
Fügen Sie folgenden Code unter die Plugin-Header hinzu:
function clr_redirect_user_after_login($user_login, $user) {
// Standard-Weiterleitung
$redirect_url = home_url();
// Rolle des Benutzers abrufen
if (in_array('administrator', $user->roles)) {
$redirect_url = admin_url();
} elseif (in_array('editor', $user->roles)) {
$redirect_url = site_url('/editor-dashboard');
} elseif (in_array('subscriber', $user->roles)) {
$redirect_url = site_url('/willkommen');
}
wp_safe_redirect($redirect_url);
exit;
}
add_action('wp_login', 'clr_redirect_user_after_login', 10, 2);
Erklärung des Codes:
- Die Funktion überprüft die Rolle des Benutzers nach dem Login.
- Basierend auf der Rolle wird eine spezifische Weiterleitungs-URL gesetzt.
wp_safe_redirect($redirect_url)leitet den Benutzer zur gewünschten Seite um.
3. Admin-Seite für benutzerdefinierte Weiterleitungen
Jetzt fügen wir eine Einstellungsseite im WordPress-Admin-Bereich hinzu, mit der Administratoren die Weiterleitungsziele ändern können.
Fügen Sie diesen Code in Ihre Plugin-Datei ein:
function clr_add_admin_menu() {
add_options_page('Login Redirect Einstellungen', 'Login Redirect', 'manage_options', 'clr-settings', 'clr_settings_page');
}
add_action('admin_menu', 'clr_add_admin_menu');
function clr_settings_page() {
?>
<div class="wrap">
<h1>Login Redirect Einstellungen</h1>
<form method="post" action="options.php">
<?php
settings_fields('clr_settings_group');
do_settings_sections('clr-settings');
submit_button();
?>
</form>
</div>
<?php
}
Erklärung des Codes:
- Die Funktion
clr_add_admin_menu()fügt ein neues Menü in den Einstellungen hinzu. - Die Funktion
clr_settings_page()erzeugt die HTML-Struktur der Einstellungsseite.
4. Weiterleitungsziele speicherbar machen
Jetzt implementieren wir die Speicherfunktion, sodass die Weiterleitungsziele in der WordPress-Datenbank gespeichert werden können.
Fügen Sie diesen Code hinzu:
function clr_register_settings() {
register_setting('clr_settings_group', 'clr_redirect_admin');
register_setting('clr_settings_group', 'clr_redirect_editor');
register_setting('clr_settings_group', 'clr_redirect_subscriber');
}
add_action('admin_init', 'clr_register_settings');
Nun aktualisieren wir die clr_settings_page()-Funktion, damit die gespeicherten Werte angezeigt werden:
function clr_settings_page() {
?>
<div class="wrap">
<h1>Login Redirect Einstellungen</h1>
<form method="post" action="options.php">
<?php
settings_fields('clr_settings_group');
do_settings_sections('clr-settings');
?>
<label>Administrator Weiterleitung:</label>
<input type="text" name="clr_redirect_admin" value="<?php echo esc_attr(get_option('clr_redirect_admin', admin_url())); ?>">
<br><br>
<label>Editor Weiterleitung:</label>
<input type="text" name="clr_redirect_editor" value="<?php echo esc_attr(get_option('clr_redirect_editor', site_url('/editor-dashboard'))); ?>">
<br><br>
<label>Subscriber Weiterleitung:</label>
<input type="text" name="clr_redirect_subscriber" value="<?php echo esc_attr(get_option('clr_redirect_subscriber', site_url('/willkommen'))); ?>">
<br><br>
<?php submit_button(); ?>
</form>
</div>
<?php
}
5. Plugin-Einstellungen in die Weiterleitungslogik integrieren
Jetzt ändern wir die clr_redirect_user_after_login()-Funktion so, dass sie die in den Einstellungen gespeicherten Werte verwendet:
function clr_redirect_user_after_login($user_login, $user) {
$redirect_url = home_url();
if (in_array('administrator', $user->roles)) {
$redirect_url = get_option('clr_redirect_admin', admin_url());
} elseif (in_array('editor', $user->roles)) {
$redirect_url = get_option('clr_redirect_editor', site_url('/editor-dashboard'));
} elseif (in_array('subscriber', $user->roles)) {
$redirect_url = get_option('clr_redirect_subscriber', site_url('/willkommen'));
}
wp_safe_redirect($redirect_url);
exit;
}
Fazit
Wir haben ein vollständiges Login Redirect Plugin entwickelt, das Benutzer basierend auf ihrer Rolle weiterleitet. Zudem haben wir eine Admin-Oberfläche erstellt, um die Weiterleitungen dynamisch zu ändern.
Hier ist der komplette Code, den Sie im wp-content/plugins/-Verzeichnis in dem neuen Ordner custom-login-redirect in die neu dafür erstellte Datei custom-login-redirect.php kopieren können.
<?php
/**
* Plugin Name: Custom Login Redirect
* Plugin URI: https://example.com
* Description: Leitet Benutzer nach dem Login je nach Rolle auf eine bestimmte Seite weiter.
* Version: 1.0
* Author: Dein Name
* Author URI: https://example.com
*/
if (!defined('ABSPATH')) {
exit; // Sicherheit: Direktzugriff verhindern
}
function clr_redirect_user_after_login($user_login, $user) {
$redirect_url = home_url();
if (in_array('administrator', $user->roles)) {
$redirect_url = get_option('clr_redirect_admin', admin_url());
} elseif (in_array('editor', $user->roles)) {
$redirect_url = get_option('clr_redirect_editor', site_url('/editor-dashboard'));
} elseif (in_array('subscriber', $user->roles)) {
$redirect_url = get_option('clr_redirect_subscriber', site_url('/willkommen'));
}
wp_safe_redirect($redirect_url);
exit;
}
add_action('wp_login', 'clr_redirect_user_after_login', 10, 2);
function clr_add_admin_menu() {
add_options_page('Login Redirect Einstellungen', 'Login Redirect', 'manage_options', 'clr-settings', 'clr_settings_page');
}
add_action('admin_menu', 'clr_add_admin_menu');
function clr_register_settings() {
register_setting('clr_settings_group', 'clr_redirect_admin');
register_setting('clr_settings_group', 'clr_redirect_editor');
register_setting('clr_settings_group', 'clr_redirect_subscriber');
}
add_action('admin_init', 'clr_register_settings');
function clr_settings_page() {
?>
<div class="wrap">
<h1>Login Redirect Einstellungen</h1>
<form method="post" action="options.php">
<?php
settings_fields('clr_settings_group');
do_settings_sections('clr-settings');
?>
<label>Administrator Weiterleitung:</label>
<input type="text" name="clr_redirect_admin" value="<?php echo esc_attr(get_option('clr_redirect_admin', admin_url())); ?>">
<br><br>
<label>Editor Weiterleitung:</label>
<input type="text" name="clr_redirect_editor" value="<?php echo esc_attr(get_option('clr_redirect_editor', site_url('/editor-dashboard'))); ?>">
<br><br>
<label>Subscriber Weiterleitung:</label>
<input type="text" name="clr_redirect_subscriber" value="<?php echo esc_attr(get_option('clr_redirect_subscriber', site_url('/willkommen'))); ?>">
<br><br>
<?php submit_button(); ?>
</form>
</div>
<?php
}
?>
Michael Rademacher
Gründer von realmaker
Michael Rademacher gründete realmaker 2003. Er entwickelt WordPress-Websites und Software, produziert Filme und Livestreams und schreibt hier über das, was er in Kundenprojekten lernt.
Über MichaelLieber betreuen lassen?
Updates, Backups und Überwachung übernimmt wp-einfach.de – zum festen Monatspreis.
