最近接到两个项目分别是要将西班牙语和德语本土化到中国,汉化以后放到中国服务器上,需求咋一看简直太简单不过了,但是没想到的是期间遭遇了不少麻烦,所幸一一得到了解决,简单记录过程如下,给后人方便。
先讲一下这个西班牙语网站,后台安装了非常多的插件,比如WPML多语言化,比如一些西班牙本土的插件:Functions Boxcom 等,咋一看也没觉得有什么难的,对方提供的是通过 UpdraftPlus – Backup/Restore 此插件后台导出的网站文件和数据库数据,拿到数据后,搭建数据起初都波澜不惊,感觉没什么难度,只不过数据库导入,wp-config.php配置好以后,发觉死活无法进入后台,总是提示Not available,于是想到了,可能是插件兼容问题导致的,于是开启了debug,的确有提示几条报错,但是没有实质性的作用,于是干脆把整个plugins目录更改为plugins1,发现可以进入后台了,但是进入了后台以后还是傻眼了,一堆报错,好些插件压根无法启动,设置很奇怪的是,连后台的语言都无法重设,始终是西班牙语,我干脆把WPML插件关闭了,但是语言还是西班牙语,最后我都有点怀疑人生了,所幸这点难题还是吓不倒我的,于是我想到了可能是WPML这个插件搞的鬼,往WP options里边写入了语言的选项,让WP后台无法更改语种,于是我进入WPML的debug里边对整个插件进行了彻底的重置,至此后台终于呈现了久违的中文,只是这个项目的汉化还会经历很多的问题,不在此教程中过多赘述。
另外一个德语的项目也遇到了类似的问题,不过要相对简单不少,德语这个项目也是通过后台的 UpdraftPlus – Backup/Restore 插件导出了所有的数据,搭建在了我们自己的服务器以后,也是死活进不了后台,经研究发现问题在于数据库里边的表前缀不是默认的wp_导致管理员的权限无法获取,至此我基本搞懂了原有,是因为 UpdraftPlus 插件导出的数据库对前缀的支持出现了一些兼容问题,于是我尝试通过直接往mysql里插入固定的值,使得对应的user重获管理员权限,操作方法如下:
进入Phpmyadmin执行以下SQL脚本:
INSERT INTO `databasename`.`wp_users` (`ID`, `user_login`, `user_pass`, `user_nicename`, `user_email`, `user_url`, `user_registered`, `user_activation_key`, `user_status`, `display_name`) VALUES ('4', 'demo', MD5('demo'), 'Your Name', 'test@yourdomain.com', 'http://www.test.com/', '2011-06-07 00:00:00', '', '0', 'Your Name'); INSERT INTO `databasename`.`wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, '4', 'wp_capabilities', 'a:1:{s:13:"administrator";s:1:"1";}'); INSERT INTO `databasename`.`wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, '4', 'wp_user_level', '10');
我们假设是需要添加一个user_id
为4的管理员,在wp_usermeta
中赋予他一个wp_capabilities
为a:1:{s:13:"administrator";s:1:"1";}
,同时再赋予一个wp_user_level
为10,至此再用这个用户登录的时候会发现已经成功登录到了管理后台,当然以上SQL脚本也可以通过DMS这种数据库管理软件来操作如下:
至此完美解决了用户无法登录后台的问题。