Lesefortschritt:

    Word­Press: Login-Zwang für bestimmte IPs deaktivieren

    27. Mai 2026 | functions.php, Word­Press

    Trick # 574 | Dieser Beitrag beinhaltet 804 Wörter. – Geschätzte Lesezeit: ca. 5 Minuten.

    Ist Ihre ganze Word­Press-Site (oder Teile davon) nur für eingeloggte User erreichbar? Im Alltag kann der Zwangs-Login ganz schön nerven. Praktisch wäre es, wenn gewisse IPs «whitelisted» wären. Die User müssten sich dann nicht wieder einloggen, bzw. müssten sich nur dann neu einloggen, wenn sie mal von woanders auf die Website zugreifen wollen. Ist gar nicht mal so schwierig einzurichten.

    Sie benötigen etwas PHP-Code. Den folgenden Block legen Sie dazu in der Datei functions.php ab. Sie finden diese im Word­Press-Backend unter Design/Theme-Datei-Editor:

    // IP-WhiteListing
    // Add settings page for managing IPs
    add_action('admin_menu', function () {
    add_options_page('Admin IP Whitelist', 'Admin IP Whitelist', 'manage_options', 'admin-ip-whitelist', 'render_ip_whitelist_page');
    });// Render the settings page
    function render_ip_whitelist_page() {
    if (!current_user_can('manage_options')) {
    return;
    }$whitelist = get_option('admin_ip_whitelist', []);
    $current_ip = $_SERVER['REMOTE_ADDR'];// Remove old IPs on page load
    clean_old_ips();if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['add_ip'])) {
    $new_ip = sanitize_text_field($_POST['new_ip']);
    if (filter_var($new_ip, FILTER_VALIDATE_IP) && !isset($whitelist[$new_ip])) {
    $whitelist[$new_ip] = time(); // Speichere aktuellen Zeitstempel
    update_option('admin_ip_whitelist', $whitelist);
    }
    }if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['remove_ip'])) {
    $remove_ip = sanitize_text_field($_POST['remove_ip']);
    unset($whitelist[$remove_ip]);
    update_option('admin_ip_whitelist', $whitelist);
    }echo '<div class="wrap">';
    echo '<h1>Admin IP-Whitelist</h1>';
    echo '<form method="post">';
    echo '<h2>IP-Whitelist</h2>';
    echo '<ul>';
    foreach ($whitelist as $ip => $timestamp) {
    $last_access = date('Y-m-d H:i:s', $timestamp);
    echo "<li><b>$ip</b><br />Letzter Zugriff: $last_access <button type='submit' name='remove_ip' value='$ip'>IP entfernen</button></li>";
    }
    echo '</ul>';
    echo '<hr>';
    echo '<h2>Aktuelle IP</h2>';
    echo "<p>Ihre IP: $current_ip</p>";
    echo '<input type="hidden" name="new_ip" value="' . esc_attr($current_ip) . '">';
    echo '<button type="submit" name="add_ip">Aktuelle IP whitelisten</button>';
    echo '</form>';
    echo '</div>';
    }// Auto-login for whitelisted IPs
    add_action('init', function () {
    if (is_user_logged_in()) {
    return;
    }$whitelist = get_option('admin_ip_whitelist', []);
    $current_ip = $_SERVER['REMOTE_ADDR'];if (isset($whitelist[$current_ip])) {
    // Update last access timestamp
    $whitelist[$current_ip] = time();
    update_option('admin_ip_whitelist', $whitelist);$admin_user = get_users(['role' => 'administrator', 'number' => 1])[0] ?? null;
    if ($admin_user) {
    wp_set_auth_cookie($admin_user->ID, true);
    }
    }
    });// Clean old IPs
    function clean_old_ips() {
    $whitelist = get_option('admin_ip_whitelist', []);
    $one_year_ago = time() - YEAR_IN_SECONDS; // Define 1 year (365 days)foreach ($whitelist as $ip => $timestamp) {
    if ($timestamp < $one_year_ago) {
    unset($whitelist[$ip]);
    }
    }update_option('admin_ip_whitelist', $whitelist);
    }// Schedule daily cleanup
    if (!wp_next_scheduled('daily_ip_cleanup')) {
    wp_schedule_event(time(), 'daily', 'daily_ip_cleanup');
    }add_action('daily_ip_cleanup', 'clean_old_ips');

    Das war der wichtigste Teil.

    In Ihrem Word­Press-Backend erscheint nun unter «Einstellungen» der neue Punkt «Admin IP Whitelist». Dort können Sie einerseits die aktuell verwendete IP sehen und diese gleich zur WhiteList hinzufügen. Das funktioniert dann auch gleich für alle anderen User der Word­Press-Seite, die von dieser IP zugreifen – was besonders in Unternehmen oder grösseren Teams sehr hilfreich ist.

    Selbstverständlich können Sie auf der Seite «Admin IP Whitelist» auch nicht mehr benötigte WhiteList -Einträge entfernen. Das Script entfernt aber IPs, von welchen mehr als ein Jahr nicht mehr zugegriffen wurde, auch selbständig. So haben Sie mehr Ordnung und senken das Sicherheitsrisiko.

    Einen Haken hat das Script allerdings: Die Internetprovider wechseln – je nach Abonnement – hin und wieder die zugewiesene IP. Teilweise sogar relativ häufig, so dass dann halt doch wieder ein Login (und allenfalls das Whitelisten) nötig ist.

    Werbung

    Word­Press-Suchfunktion deaktivieren

    Word­Press bietet eine Suchfunktion an. Das ist meistens sehr praktisch – aber auch ein wenig übertrieben, wenn Sie eine sehr kleine Website betreuen oder gar einen OnePager administrieren. Da kann es eine Möglichkeit sein, die Suche zu deaktivieren.
    Keine Inhalte gefunden.

    Werbung

     

    Pin It on Pinterest

    Share This