禁止含有空格字符用户名注册

WordPress 登录的时候会提示输入「用户名称」和「密码」,而这个「用户名称」其实也可以是「邮箱」,很方便但也很容易让久未登入的用户忘记当初怎么登录的。

所以满多时候会刻意的把「用户名称」直接改成「帐号」或是「信箱」字眼来提示。 这比起让客户端回想「用户名称」更直觉与不会搞混。

如何在 WordPress 中创建自定义用户注册表单
如何在 WordPress 中创建自定义用户注册表单

毕竟看到「用户名称」就会让人想打一个昵称或英文名字,好像用在之后呈现出来能够人性一点。 但其实不是,也因此提高注册人的记忆复杂度。

且又刚好 WordPress 这个「用户名称」还可以注册有空白的一组字符串,对现在很多系统来说属不常见的设计 XD

所以为了避免还真的给你打个「Jacky Chen」这样的用户名称去注册,程序上要补一个逻辑,如下:

function mxp_validate_username_with_spaces($valid, $username) {
    if (preg_match("/\\s/", $username)) {
        return false;
    }
    return $valid;
}
add_filter('validate_username', 'mxp_validate_username_with_spaces', 10, 2);

function mxp_show_registration_errors($errors, $sanitized_user_login, $user_email) {
    if ($sanitized_user_login == '') {
        $errors->add('invalid_username', '<strong>帳號中不得含有空白字元。</strong>');
    }
    return $errors;
}
add_filter('registration_errors', 'mxp_show_registration_errors', 10, 3);

上述代码片段放置于子主题中 functions.php 即可发挥作用,过滤含有空白字符串的帐号注册,避免用户动线发生问题。

发表评论

您的电子邮箱地址不会被公开。