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);



Schreibe einen Kommentar