让wordpress支持中文用户名的简便方法

日期: 标签:WordPress教程
如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务:  点此联系我

最近做个项目,需要让WordPress支持中文用户名。上网搜索一下,中文的教程几乎是千篇一律地要修改WordPress的源文件formatting.php,鉴于WordPress如此频繁的更新频率,修改源文件是极其不理智的做法,下次更新又得重新修改。WordPress提供了那么丰富的filter和action,何不加以利用呢?

下面是我从WordPress Answers上搜索到的方法,将以下php代码复制到当前主题目录下的functions.php中,即可让WordPress支持使用中文用户名注册和登录(以下代码已有新版本,更安全,点此查看):

function ludou_non_strict_login( $username, $raw_username, $strict ) {
    if( !$strict )
        return $username;

    return sanitize_user(stripslashes($raw_username), false);
}
add_filter('sanitize_user', 'ludou_non_strict_login', 10, 3);

参考文章:
Allowing non-latin characters in registration

-- 完 --

本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜即刻 https://www.ludou.org/wordpress-allowing-chinese-in-registration.html
露兜
kaapass@outlook.com  QQ 825533758

业余编程爱好者。

26 条留言

点此留言
  1. yut2源头 yut2源头

    学习啦..感谢博主…

  2. 哥特复兴 哥特复兴

    长知识了·····

  3. 杨俊伟 杨俊伟

    恩,这个很实用!!最近在整合ucenter,中文用户名方面用的上!!

  4. 萨龙龙 萨龙龙

    实用的功能,实现了中文注册。但发现了一个问题,在wp工具栏右上角上“我的帐户”中,登录名显示乱码了?

  5. 软件酷(Softku) 软件酷(Softku)

    这个中文显示也好

  6. 潜行者m 潜行者m

    不过滤是不是会产生安全隐患,随便用什么符号注册用户名?

    • Ludou

      @潜行者m WordPress会对存入数据库的的特殊符号会进行转义,不会存在SQL注入的危险。

  7. 西安金蝶软件 西安金蝶软件

    又学到一招,谢谢博主分享!

  8. 布八网 布八网

    放上去后无法注册

  9. 德均博客 德均博客

    学习了 谢谢

  10. nemo

    @ludou 为什么我在本地修改后可以了,上传到主机就不可以了呢?是不是需要空间支持什么呢?系统是linux

  11. 宅推网 宅推网

    实用的功能!

  12. 我不服

    中文用户名的长度应该怎么控制呢,我试了试好像能取很长很长。。。。。

    • 露兜

      @我不服 英文也可以很长很长,取决与WordPress对用户名的限制。
      如果你要自己指定用户名长度,自己上网搜索控制字符串长度的代码,对$raw_username进行判断即可。

      • 我不服

        @露兜 谢谢博主,我自己用php限制了下注册长度,不然碰见了调皮的小伙伴 把名字取得老长,一些页面里面都变形了

  13. 小梦

    谢谢楼主

  14. 灵异网 灵异网

    你好,我的网站是从别的程序转换为wp的,之前有很多中文用户,所以非常需要这个功能,但是还有一个问题:中文用户名发的帖子,点击用户名,链接到了无用户名发的帖子的界面,而不能正确显示该用户所发所有帖子(详情如网站上随便一个中文用户名发的帖子即可看到),请问有什么办法吗?谢谢您!

    • 露兜

      @灵异网 我在本地(apache,twentyten主题)测试是正常的,你可以换默认主题试试有没有这个问题

      • 寻蜜网 寻蜜网

        @露兜 大哥,我也是这个问题,我的注册支持中文后,也只有英文注册的用户能连接到作者页面 比如:(www.xxxxx.com/author/英文帐号 ) 要是中文注册的用户的作者页面地址就直接是 (www.xxxxx.com/author )了 链接有问题 我试了试 (www.xxxxx.com/author/中文帐号 ) 也是错误的显示 大哥有方法解决么 谢谢

        • 露兜

          @寻蜜网 暂时没办法解决

          • 寻蜜网 寻蜜网

            @露兜 谢大哥回复,我都换成作者ID 了

  15. 北京网站建设 北京网站建设

    用户名换成中文的就好多了,看着都舒服!谢谢分享。

  16. 外桥 外桥

    你好,我的网站是购买的正版主题,注册和登录好像是JS做的,只支持英文用户名,使用你的方法也没有一点作用,怎么做才好呢

  17. isdola isdola

    楼主,你好!我用你新版的代码在本地做了测试,当函数与钩子放在同一个文件里时,一切正常。但是当我把最后一条钩子函数单独放在另外一个文件里时,在注册时没问题,注册后在前台左上角显示的还是注册按钮(而不是用户名),但是在后台用户菜单里面却是可以看到这个用户的注册信息的,请问这个是什么地方出问题了吗?

    补充说明:因为我用的这个主题,它把主题用到的函数集中放在一个文件里,将钩子函数单独放在另外一个文件里,所以为了统一管理,我也想将你代码里的函数和钩子分开放置,可是遇到上面这个问题,所以留言请教一下。

    期待你的解答,谢谢你!

发表留言