让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
学习啦..感谢博主…
长知识了·····
恩,这个很实用!!最近在整合ucenter,中文用户名方面用的上!!
实用的功能,实现了中文注册。但发现了一个问题,在wp工具栏右上角上“我的帐户”中,登录名显示乱码了?
@萨龙龙 实测,显示正常。
这个中文显示也好
不过滤是不是会产生安全隐患,随便用什么符号注册用户名?
@潜行者m WordPress会对存入数据库的的特殊符号会进行转义,不会存在SQL注入的危险。
又学到一招,谢谢博主分享!
放上去后无法注册
@布八网 WordPress 3.8.1 版本测试正常。
学习了 谢谢
@ludou 为什么我在本地修改后可以了,上传到主机就不可以了呢?是不是需要空间支持什么呢?系统是linux
实用的功能!
中文用户名的长度应该怎么控制呢,我试了试好像能取很长很长。。。。。
@我不服 英文也可以很长很长,取决与WordPress对用户名的限制。
如果你要自己指定用户名长度,自己上网搜索控制字符串长度的代码,对$raw_username进行判断即可。
@露兜 谢谢博主,我自己用php限制了下注册长度,不然碰见了调皮的小伙伴 把名字取得老长,一些页面里面都变形了
谢谢楼主
你好,我的网站是从别的程序转换为wp的,之前有很多中文用户,所以非常需要这个功能,但是还有一个问题:中文用户名发的帖子,点击用户名,链接到了无用户名发的帖子的界面,而不能正确显示该用户所发所有帖子(详情如网站上随便一个中文用户名发的帖子即可看到),请问有什么办法吗?谢谢您!
@灵异网 我在本地(apache,twentyten主题)测试是正常的,你可以换默认主题试试有没有这个问题
@露兜 大哥,我也是这个问题,我的注册支持中文后,也只有英文注册的用户能连接到作者页面 比如:(www.xxxxx.com/author/英文帐号 ) 要是中文注册的用户的作者页面地址就直接是 (www.xxxxx.com/author )了 链接有问题 我试了试 (www.xxxxx.com/author/中文帐号 ) 也是错误的显示 大哥有方法解决么 谢谢
@寻蜜网 暂时没办法解决
@露兜 谢大哥回复,我都换成作者ID 了
用户名换成中文的就好多了,看着都舒服!谢谢分享。
你好,我的网站是购买的正版主题,注册和登录好像是JS做的,只支持英文用户名,使用你的方法也没有一点作用,怎么做才好呢
楼主,你好!我用你新版的代码在本地做了测试,当函数与钩子放在同一个文件里时,一切正常。但是当我把最后一条钩子函数单独放在另外一个文件里时,在注册时没问题,注册后在前台左上角显示的还是注册按钮(而不是用户名),但是在后台用户菜单里面却是可以看到这个用户的注册信息的,请问这个是什么地方出问题了吗?
补充说明:因为我用的这个主题,它把主题用到的函数集中放在一个文件里,将钩子函数单独放在另外一个文件里,所以为了统一管理,我也想将你代码里的函数和钩子分开放置,可是遇到上面这个问题,所以留言请教一下。
期待你的解答,谢谢你!