Wir erstellen ein eigenes Custom Login Redirect Plugin

Schlüssel am Ring und ein hölzerner Wegweiser, dazwischen eine kobaltblaue KugelKI-generiert
Inhalt

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 Michael

Lieber betreuen lassen?

Updates, Backups und Überwachung übernimmt wp-einfach.de – zum festen Monatspreis.

Zu wp-einfach.de