saber酱的抱枕

Fly me to the moon

10/14
18:37
软件

修改WordPress的用户角色


本站长期以来把新注册用户的角色设置为“贡献者”,这样他们可以提交投稿。结果天天都会收到一些垃圾投稿。
翻看了一些投稿之后,我大开眼界,它们的语言五花八门,包括英语、俄语、法语、德语、西班牙语、波兰语、保加利亚语、印尼语……
内容包括:成人网站广告、线上赌球广告、互联网赌场广告、商业软件广告、购物网站广告、清洁用品广告、空调广告、印刷业务广告、松露广告、手提包广告、貂皮大衣广告、运动鞋广告、旅游景点广告、社交媒体广告、贷款广告、克服暴饮暴食的健康生活指南等等。
我想把贡献者用户都改为订阅者,这样他们就不能投稿了。但是现在已经有三万多个贡献者用户,在网站后台不能一次性修改他们的角色,所以只能去改数据库了。

WordPress 的用户相关数据存储在两个表里,wp_usermetawp_users,其中角色数据是在wp_usermeta 里的。

首先看一个贡献者的数据:

对比订阅者的数据:

区别只在于两个字段 wp_capabilitieswp_user_level

// 贡献者
wp_capabilities      | a:1:{s:11:"contributor";b:1;}
wp_user_level        | 1

// 订阅者
wp_capabilities      | a:1:{s:10:"subscriber";b:1;}
wp_user_level        | 0

这俩字段都是与用户权限相关的,我找到了一些参考资料:
Default WordPress user roles and capabilities
User Levels

这些资料看了之后,没用的知识增加了,因为我不需要处理其他权限的值,所以直接替换这俩字段的值就行了。

update wp_usermeta set meta_value='a:1:{s:10:"subscriber";b:1;}' where meta_key='wp_capabilities' and meta_value='a:1:{s:11:"contributor";b:1;}';
update wp_usermeta set meta_value=0 where meta_key='wp_user_level' and meta_value=1;

在网站后台刷新用户管理页面,看到贡献者都变成订阅者了,完事。

修改WordPress的用户角色

评论 locationiskey 撤销评论