ユーザー名に使用できる文字とその理由に関するドキュメントはどこにありますか?


11

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

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

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

回答:


7

ユーザー名にスペースを使用できますが、問題ありません。wordpress.orgの一部のユーザーのユーザー名にスペースが含まれています。

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

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

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


理にかなっていますが、マルチインストールでは、スペース、@、またはを使用してユーザーを作成できません。名前に。私はformatting.phpを見て、それは@を許可するようです。とスペース。これらのキャラクターを妨げているものを突き止めるためにどこを検索すればよいかわかりませんか?彼らがなぜ阻止されるのか知りたいのですが。
パーセル、2011

3
それはwp-includes / ms-functions.phpのwpmu_validate_user_signup関数にあり、はい、それは文字と数字のみを許可します。間違いなくマルチサイトのことです。
オットー

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を見て、それは@を許可するようです。とスペース。これらのキャラクターを妨げているものを突き止めるためにどこを検索すればよいかわかりませんか?彼らがなぜ阻止されるのか知りたいのですが。
パーセル、2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.