Lesefortschritt:

    Temporären Direktlink zum Word­Press-Backend erstellen

    21. Oktober 2026 | functions.php, Word­Press

    Trick # 619 | Dieser Beitrag beinhaltet 0 Wörter. – Geschätzte Lesezeit: ca. 0 Minuten.

    Heute eine besonders praktische Word­Press-Funktion: wir erstellen einen temporären Login-Link. Solche Links ermöglichen es einem User, sich einmalig und ohne Benutzername und Passwort anzumelden – ideal für Supportzugänge, Testbenutzer oder andere spezielle Anwendungsfälle. Diese Links sind sicher, zeitlich begrenzt und einfach zu verwenden. In diesem Beitrag zeigen wir Ihnen wie simpel und praktisch das geht.

    Es gibt viele Gründe, warum temporäre Login-Links nützlich sein können. Erstens ermöglichen sie Administratoren, direkten Zugriff auf ein Benutzerkonto zu erhalten, um ein Problem zu analysieren. Zweitens sind zeitlich begrenzte Zugänge ideal, um externen Partnern oder Testnutzern kurzfristigen Zugriff zu geben. Drittens fällt der Austausch von Passwörter aus.

    Der hier vorgestellte Ansatz sorgt dafür, dass die Sicherheit gewahrt bleibt: Das Login ist nur ein einziges mal möglich und die Links werden nach zehn Stunden automatisch ungültig.

    Kopieren Sie nun den folgenden Code und legen Sie ihn in der Datei functions.php Ihrer Word­Press-Installation ab. Diesee Datei können Sie im Backend unter Design/Theme-Datei-Editor bearbeiten:

    // Widget erstellen, um temporäre Login-Links zu generieren (nur für Administratoren)
    add_action('wp_dashboard_setup', function() {
    if (current_user_can('administrator')) { // Überprüfung auf Administratorrechte
    wp_add_dashboard_widget(
    'temporary_login_widget',
    'Temporäre Login-Links',
    'render_temporary_login_widget'
    );
    }
    });function render_temporary_login_widget() {
    if (isset($_POST['generate_login_link'])) {
    $role = sanitize_text_field($_POST['role']);
    $users = get_users(array('role' => $role));
    $links = array();foreach ($users as $user) {
    $links[] = generate_auto_login_link($user->ID);
    }echo '<p><strong>Temporärer Login-Link:</strong></p>';
    foreach ($links as $link) {
    echo '<p><input type="text" value="' . esc_url($link) . '" readonly onclick="this.select();" class="temp-link-input"> <button class="copy-link-button" data-link="' . esc_url($link) . '">Kopieren</button></p>';
    }
    echo '<p id="copy-success" style="display:none; color:green;">Link kopiert!</p>';
    echo '<script>
    document.addEventListener("DOMContentLoaded", function() {
    document.querySelectorAll(".copy-link-button").forEach(function(button) {
    button.addEventListener("click", function() {
    const link = button.getAttribute("data-link");
    navigator.clipboard.writeText(link).then(function() {
    const successMessage = document.getElementById("copy-success");
    successMessage.style.display = "block";
    setTimeout(() => { successMessage.style.display = "none"; }, 5000);
    });
    });
    });
    });
    </script>';
    }// Formular zur Rollenwahl
    echo '<form method="post">';
    echo '<p><label for="role">Rolle auswählen:</label></p>';
    echo '<select name="role" id="role">';global $wp_roles;
    foreach ($wp_roles->roles as $role => $details) {
    echo '<option value="' . esc_attr($role) . '">' . esc_html($details['name']) . '</option>';
    }echo '</select>';
    echo '<p><button type="submit" name="generate_login_link">Login-Links generieren</button></p>';
    echo '</form>';
    }function generate_auto_login_link($user_id) {
    $token = bin2hex(random_bytes(16)); // Einzigartigen Token generieren
    $expiration = time() + 10 * 60 * 60; // Ablaufzeit: 10 Stundenupdate_user_meta($user_id, 'auto_login_token', $token);
    update_user_meta($user_id, 'auto_login_expiration', $expiration);return home_url('/?auto_login=' . $token);
    }// Auto-Login-Mechanismus
    add_action('init', function() {
    if (isset($_GET['auto_login'])) {
    $token = sanitize_text_field($_GET['auto_login']);
    $users = get_users(array(
    'meta_key' => 'auto_login_token',
    'meta_value' => $token,
    ));if (!empty($users)) {
    $user = $users[0];
    $expiration = get_user_meta($user->ID, 'auto_login_expiration', true);if (time() > $expiration) {
    wp_die('Dieser Login-Link ist abgelaufen.');
    }wp_set_auth_cookie($user->ID, true);
    delete_user_meta($user->ID, 'auto_login_token');
    delete_user_meta($user->ID, 'auto_login_expiration');wp_redirect(admin_url()); // Weiterleitung ins Dashboard
    exit;
    }
    }
    });
    

    Dem Word­Press-Dashboard wird damit ein Widget hinzugefügt, sofern sich ein Administrator einloggt. Für jeden Link wird ein einzigartiger Token erstellt, der zusammen mit einer Ablaufzeit gespeichert wird. Wenn der Link aufgerufen wird, überprüft Word­Press die Gültigkeit des Tokens und der Ablaufzeit. Ist alles korrekt, wird der Benutzer eingeloggt und der Token sofort gelöscht. Die zeitliche Begrenzung sorgt zudem dafür, dass Links nach Ablauf nicht missbraucht werden können.

    Diese Links sind für einen einzigen Aufruf geeignet. Ausserdem wird mit obigem Code festgelegt, dass Links – auch wenn sie nicht genutzt werden – nach zehn Stunden ungültig werden. Diese zeitliche Begrenzung geschieht in Zeile 58, die Sie natürlich nach Ihren Bedürfnissen anpassen können.

    Werbung

    Keine Inhalte gefunden.

    Werbung

     

    Pin It on Pinterest

    Share This
    Überblick über den Datenschutz

    Diese Website verwendet Cookies, damit wir Ihnen die bestmögliche Benutzererfahrung bieten können. Cookie-Informationen werden in Ihrem Browser gespeichert und dienen dazu, Sie wiederzuerkennen, wenn Sie auf unsere Website zurückkehren, und unserem Team zu helfen, zu verstehen, welche Bereiche der Website Sie am interessantesten und nützlichsten finden.