Де я можу знайти документацію щодо того, які символи дозволено в іменах користувачів і чому?


11

Мені б хотілося використовувати пробіли в іменах користувачів, але це не здається можливим. Чи є запис у кодексі чи десь, що пояснює, які символи дозволені та чому він був обмежений цим набором, чи це лише альфа та висмоктує його?

Якщо я хочу, щоб користувачі використовували щось інше, ніж ім'я користувача, не маючи пробілів, чи є моїм єдиним реальним варіантом плагін, який дозволяє користувачам входити замість своїх адрес електронної пошти, але все ж потрібен лише альфа-ім'я користувача при створенні облікового запису?

О, і я перебуваю на сайті WPMU / мережі.

Відповіді:


7

Ви можете використовувати пробіли в іменах користувачів, без проблем. Кілька користувачів на wordpress.org мають пробіли у своїх іменах користувачів.

Суворий режим дозволяє лише цим символам: a-z0-9<space>_.\-@

Однак WP не за замовчуванням для суворого режиму.

Тепер багатомісний сайт має різні обмеження, і він може позбавити пробілів там. Це пояснюється тим, що імена користувачів використовуються для створення незалежних блогів і подібних під час багатосторонньої інсталяції.


Має сенс, але все-таки багатофункціональна установка не дозволить мені створювати користувачів із пробілами @, або. в імені. Я подивився на formatting.php і, схоже, дозволяє @. і пробіли. Будь-яка ідея, де мені слід шукати, щоб з’ясувати, що заважає цим персонажам? Я просто хотів би знати, чому їм заважають.
Перселл

3
Це у функції wpmu_validate_user_signup у wp-include / ms-function.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 );
}

Ви можете підключитися до цієї функції та змінити поведінку за замовчуванням на свою.


Дякуємо за вказівку formatting.php. Моя багатофункціональна установка не дозволить мені створювати користувачів із пробілами, @ або. в імені. Я подивився на formatting.php і, схоже, дозволяє @. і пробіли. Будь-яка ідея, де мені слід шукати, щоб з’ясувати, що заважає цим персонажам? Я просто хотів би знати, чому їм заважають.
Перселл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.