Ankerlink an den Anfang der Seite
801 9218
Generic filters
Filter by Kategorien

Die Autorenschaft sollte in einem Projekt stärker hervorgehoben werden, um die Kompetenz der Verfasser technischer Artikel deutlicher zu vermitteln. Damit einher ging der Wunsch nach Autorenseitenlinks in Form von vorname-nachname. Grundsätzlich kann ein Username in der Datenbank entsprechen geändert werden, doch im Zuge der Registrierung ist die Verwendung eines Bindestrichs nicht vorgesehen.

Diese zwei kleinen Snippetn umgehen die Hürde, resp. beschränken die erlaubten Zeichen auf Kleinbuchstaben, Ziffern und Bindetstriche.

/**
 * Allow hyphens in WordPress usernames.
 */
add_filter('sanitize_user', function ($username, $raw_username, $strict) {
    // Only modify if not in strict mode
    if ($strict) {
        return $username;
    }
    // Allow only hyphens (no underscores or dots to avoid URL issues)
    // WordPress removes hyphens, so we need to preserve them
    $username = preg_replace('/[^a-z0-9\-]/i', '', $raw_username);
    return $username;
}, 10, 3);

/**
 * Override WordPress username validation to allow hyphens.
 */
add_filter('validate_username', function ($valid, $username) {
    // Allow only hyphens in usernames (no underscores or dots to avoid URL issues)
    if (preg_match('/^[a-z0-9\-]+$/i', $username)) {
        return true;
    }
    return $valid;
}, 10, 2);

Für Multisiteumgebung zusätzlich

/**
 * Allow hyphens in Multisite usernames (additional validation).
 */
add_filter('wpmu_validate_user_signup', function ($result) {
    if (!is_multisite()) {
        return $result;
    }

    if (isset($result['user_name']) && !empty($result['user_name'])) {
        $username = $result['user_name'];
        // Check if username contains only allowed characters (only hyphens, no underscores or dots)
        if (preg_match('/^[a-z0-9\-]+$/i', $username)) {
            // Remove any existing errors about invalid characters
            if (isset($result['errors']) && is_wp_error($result['errors'])) {
                $result['errors']->remove('user_name');
            }
        }
    }

    return $result;
}, 10, 1);

Bitte das Kommentarfeld nicht für Supportanfragen nutzen; hier kann kein Support angeboten werden. Die Angabe von Name oder E-Mail-Adresse ist optional, ein Spitzname wäre trotzdem nett.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Name und E-Mail-Adresse (beides optional, da alle Kommentare moderiert werden) werden dauerhaft gespeichert. Über dieses Formular kann jeder Zeit die Löschung persönlicher Daten oder Kommentare angefordert werden; die Anfrage wird nicht veröffentlicht und nach der Bearbeitung gelöscht. IP-Adressen, die mit Kommentaren gespeichert werden, werden nach zwei Monaten automatisch gelöscht.