Где я могу найти документацию о том, какие символы разрешены в именах пользователей и почему?

11

Я хотел бы иметь возможность использовать пробелы в именах пользователей, но это не представляется возможным. Есть ли в кодексе запись или где-то еще, что объясняет, какие символы разрешены и почему это было ограничено этим набором, или это только альфа-код, и он поглощает это?

Если я хочу, чтобы пользователи использовали что-то другое, кроме имени пользователя без пробелов, является ли мой единственный реальный вариант плагином, который позволяет пользователям входить в систему с использованием своих адресов электронной почты, но при этом все же требует имени пользователя только альфа при создании учетной записи?

О, и я нахожусь на сайте WPMU / сети.

Purcell
источник

Ответы:

7

Вы можете использовать пробелы в именах пользователей, нет проблем. Несколько пользователей на wordpress.org имеют пробелы в именах пользователей.

Строгий режим разрешает только эти символы: a-z0-9<space>_.\-@

Однако WP не использует строгий режим по умолчанию.

Теперь, у мультисайта есть другие ограничения, и это может лишить места там. Это связано с тем, что имена пользователей используются для создания независимых блогов и т. Д. При многосайтовой установке.

эфирное масло
источник
Имеет смысл, и все же моя мультиустановка не позволит мне создавать пользователей с пробелами, @ или. во имя. Я посмотрел на formatting.php, и он, кажется, позволяет @. и пробелы. Любая идея, где я должен искать, чтобы выяснить, что мешает этим персонажам? Я просто хотел бы знать, почему они предотвращены.
Перселл
3
Он находится в функции wpmu_validate_user_signup в wp-includes / ms-functions.php, и да, он допускает только буквы и цифры. Определенно вещь многосайтовая.
Отто
5

Я не думаю, что есть какая-либо официальная документация по этому поводу, но вы можете взглянуть на sanitize_userфункцию в wp-includes/formatting.php:

function sanitize_user( $username, $strict = false ) {
    $raw_username = $username;
    $username = wp_strip_all_tags( $username );
    $username = remove_accents( $username );
    // Kill octets
    $username = preg_replace( '|%([a-fA-F0-9][a-fA-F0-9])|', '', $username );
    $username = preg_replace( '/&.+?;/', '', $username ); // Kill entities

    // If strict, reduce to ASCII for max portability.
    if ( $strict )
        $username = preg_replace( '|[^a-z0-9 _.\-@]|i', '', $username );

    $username = trim( $username );
    // Consolidate contiguous whitespace
    $username = preg_replace( '|\s+|', ' ', $username );

    return apply_filters( 'sanitize_user', $username, $raw_username, $strict );
}

Вы можете подключиться к этой функции и переопределить поведение по умолчанию своим собственным.

mike23
источник
Спасибо за указание на formatting.php. Моя мультиустановка не позволит мне создавать пользователей с пробелами, @ или. во имя. Я посмотрел на formatting.php, и он, кажется, позволяет @. и пробелы. Любая идея, где я должен искать, чтобы выяснить, что мешает этим персонажам? Я просто хотел бы знать, почему они предотвращены.
Перселл