Dove posso trovare la documentazione su quali caratteri sono ammessi nei nomi utente e perché?


11

Mi piacerebbe poter usare gli spazi nei nomi utente, ma questo non sembra possibile. C'è un writeup nel codice o da qualche parte che spiega quali caratteri sono ammessi e perché è stato limitato a quel set o è solo alfa e lo succhia?

Se voglio che gli utenti utilizzino qualcosa di diverso da un nome utente senza spazi, la mia unica vera opzione è un plug-in che consente invece agli utenti di accedere con i loro indirizzi e-mail, ma richiede comunque un nome utente solo alfa alla creazione dell'account?

Oh, e sono su un sito WPMU / rete.

Risposte:


7

Puoi usare gli spazi nei nomi utente, nessun problema. Diversi utenti su wordpress.org hanno spazi nei loro nomi utente.

La modalità rigorosa consente solo questi personaggi: a-z0-9<space>_.\-@

Tuttavia, WP non passa alla modalità rigorosa.

Ora, il multisito ha restrizioni diverse e può rimuovere gli spazi lì. Questo perché i nomi utente vengono utilizzati per creare blog indipendenti e simili su installazioni multisito.


Ha senso, eppure la mia installazione multipla non mi permetterà di creare utenti con spazi, @ o. nel nome. Ho guardato formatting.php e sembra consentire @. e spazi. Qualche idea di dove dovrei cercare per capire cosa impedisce questi personaggi? Vorrei solo sapere perché sono prevenute.
Purcell,

3
È nella funzione wpmu_validate_user_signup in wp-Includes / ms-Functions.php e sì, consente solo lettere e numeri. Sicuramente una cosa multisito.
Otto

5

Non credo che ci sia alcuna documentazione ufficiale a riguardo, ma puoi dare un'occhiata alla sanitize_userfunzione in 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 );
}

È possibile agganciare quella funzione e sovrascrivere il comportamento predefinito con il proprio.


Grazie per aver sottolineato formatting.php. La mia installazione multipla non mi permetterà di creare utenti con spazi, @ o. nel nome. Ho guardato formatting.php e sembra consentire @. e spazi. Qualche idea di dove dovrei cercare per capire cosa impedisce questi personaggi? Vorrei solo sapere perché sono prevenute.
Purcell,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.