让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源头

    学习啦..感谢博主…

  2. 哥特复兴

    长知识了·····

  3. 杨俊伟

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

  4. 萨龙龙

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

  5. 软件酷(Softku)

    这个中文显示也好

  6. 潜行者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/中文帐号 ) 也是错误的显示 大哥有方法解决么 谢谢

  15. 北京网站建设

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

  16. 外桥

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

  17. isdola

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

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

    期待你的解答,谢谢你!

发表留言