在哪里可以找到有关用户名中允许使用哪些字符的文档,为什么?


11

我希望能够在用户名中使用空格,但这似乎是不可能的。抄本或某处是否有文字说明允许使用哪些字符以及为什么将其限制为该字符集,还是仅仅是字母并将其吸收?

如果我希望用户使用用户名而不是空格,那么我唯一真正的选择是一个允许用户使用其电子邮件地址登录但在创建帐户时仍需要纯Alpha用户名的插件吗?

哦,我在WPMU /网络上。

Answers:


7

您可以在用户名中使用空格,没问题。wordpress.org上的多个用户的用户名中都有空格。

严格模式仅允许以下字符: a-z0-9<space>_.\-@

但是WP并非默认为严格模​​式。

现在,多站点有不同的限制,它可能会剥夺那里的空间。这是因为用户名用于创建独立的博客,例如用于多站点安装。


很有道理,但是我的多重安装不允许我使用空格@或创建用户。在名字里。我查看了formatting.php,它似乎允许@。和空格。我应该在哪里搜寻以找出阻止这些字符发生的任何想法?我只想知道为什么要阻止他们。
赛尔(Purcell)

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,它似乎允许@。和空格。我应该在哪里搜寻以找出阻止这些字符发生的任何想法?我只想知道为什么要阻止他们。
赛尔(Purcell)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.