WordPress 使用者角色显示“不指派使用者角色”更新也无效

今天出现个怪问题,在后台变更使用者角色都没反应,不管设定哪一个角色,都会显示“不指派使用者角色”,而且没有错误讯息,像什么事都没发生一样

变更使用者角色都没反应,会显示“不指派使用者角色”

在使用者列表中的“使用者角色”栏则显示“未获指派”,在这情况下,不管我怎么修改使用者角色都没有反应,只会显示“不指派使用者角色”

找问题吧 Debug 开始

往储存角色资料损毁方向着手,用“phpMyAdmin”开启网站资料库,开启“wp_usermeta”这张表

注:wp_usermeta前面的 wp_ 是可被替换的,请用您安装WordPress 时的资料表前缀,如果忘记了,可到安装WordPress 的根目录中开启 wp-config.php 其中 $table_prefix 就储存著安装时的资料表前缀

打开 wp_usermeta 这张资料表后,按 phpMyAdmin 面板上方搜寻页签,在meta_key 栏中输入“ %_capabilities”按下右下角“执行”按纽,进行资料查询

“%”为 MySQL的万用字元

查询结果列出所有使用者的角色资料

使用者角色资料存在 “wp_capabilities”这个 metadata 中,这个 metadata 比较特别,他的 meta_key 的前端也加上了与资料表一样的前缀字串

在搜寻结果中发现了一笔资料的 meta_key 长得特别不一样,这个 meta_key 由大小写英文混杂组成

修改它,把它全部改成小写,宾果!!

修改后至使用者编辑页,变更使用者角色,恢复正常

总结

错误原因是资料库前缀文字大小写问题造成,中间也许有Bug,不然照理说,若程式区分大小写,WP后台应该是会找不到角色资料才对,而找不到资料的情况下重新储存时应该会重新产生一笔正确资料,但事实上没有也没有错误,所以我觉得应该是一个Bug

另外,这个站其实有透过第三方服务以拷贝的方式产生,在过程中前缀字大小写不知道在哪个环节错乱,这也蛮难去查的

所以总结,为避免这个问题,安装 WordPress 时,输入的前缀文字,避免使用大小写夹杂的前缀文字。

发布留言

发布留言必须填写的电子邮件地址不会公开。 必填栏位标示为 *

这个网站采用 Akismet 服务减少垃圾留言。进一步了解 Akismet 如何处理网站访客的留言资料