web-dev-qa-db-ja.com

ユーザー名に使用できる文字とその理由についての文書はどこにありますか。

ユーザー名にスペースを使用できるようにしたいのですが、これは不可能に思われます。どの文字が許可されているのか、そしてなぜそれがそのセットに制限されているのか、それとも単にアルファのみでそれを吸い上げているのかを説明したコーデックスのどこかに書いてあるか。

ユーザーにスペースなしのユーザー名以外のものを使用させたい場合、私の唯一の現実的な選択肢は、ユーザーが自分の電子メールアドレスでログインできるようにするプラグインですが、アカウント作成時にアルファのみのユーザー名が必要ですか?

ああ、私はWPMU /ネットワークサイトにいます。

11
Purcell

ユーザー名にスペースを使用できますが、問題ありません。 wordpress.orgの何人かのユーザは、彼らのユーザ名にスペースを持っています。

厳密モードでは以下の文字のみが許可されます。a-z0-9<space>_.\-@

ただし、WPはデフォルトで厳密モードにはなりません。

現在、マルチサイトにはさまざまな制限があり、そこでスペースを削除することがあります。これは、マルチサイトインストールでは、ユーザー名を使用して独立したブログなどを作成するためです。

7
Otto

これに関する公式なドキュメントはないと思いますが、sanitize_userwp-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 );
}

あなたはその関数にフックしてあなた自身のものでデフォルトの振る舞いを上書きすることができます。

5
mike23