看到一个网友想批量修改文章权限,让网站以前的文章都设置为vip等级才可以浏览,自己一条一条修改太傻了,也太慢了。
有朋友建议他全局搜索后台的代码,通过修改代码,实现后台模板默认添加文章的阅读权限,这样的思路只能针对以后新添加的文章,但是之前历史文章是没有办法的,那怎么办呢?
理清思路
首先我们知道,文章阅读权限,是属于post-meta的属性,是被保存在数据库里的,那最快最方便的办法,当然是直接修改数据库,但是数据库字段那么多,我们要修改哪些字段?
寻找字段
比如,我们需要修改阅读权限,那么我们可以借助F12,轻松知道name字段的值,就是对应数据库保存的字段b2_post_roles,我们新建一篇文章,勾选用户等级只允许vip1和vip2,保存,我们到数据库查看一下字段的值情况。
a:2:{i:0;s:4:"vip1";i:1;s:4:"vip2";}
和我们预想的一样,那么从理论上来说,我们只需要照搬复制,新建一条记录,设置好post_id ,然后把字段 b2_post_roles,值设置为上面一条记录结果,我们就能把指定文章阅读权限设置为vip1、vip2可阅读。
数据库测试
insert into wp_postmeta values(null,文章id,'b2_post_roles','a:2:{i:0;s:4:"vip1";i:1;s:4:"vip2";}')
我们再次新建一篇文章,执行sql之后我们再看这篇文章的属性,是可以看到隐藏内容权限这里,勾选了vip1和vip2,但是默认的选项还是无限制,怎么回事呢?
我们再F12看一下,支付费用可见、支付积分可见、限制等级可见这些值的name名称,原来我们漏掉了另一个字段 b2_post_reading_role ,并且限制等级可见的值是roles,那我们再多补上一条记录,就可以让这篇文章的权限设置为限制等级可见了。

insert into wp_postmeta values(null,文章id,'b2_post_reading_role','roles')
批量sql语句
我们知道一篇文章如何修改之后,接下来我们就可以直接批量获取post_id,写一个批量替换/新增的阅读权限的sql。
注:
如果你执行sql的时候提示“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ” at line 3”。
需要先设置一下phpMyAdmin默认的分隔符

看下可以不,感谢
按照流程测试了一下没有效果啊。
请按工单里面联系方式联系
太感谢了,刚好用的上!
感谢分享辛苦了,很好的教程
我是用的 update wp_postmeta set meta_value=REPLACE (meta_value,’vip0|free’,’vip|free’) 这个命令 默认月付会员下载权限修改为 ,所有会员都有下载权限
好吧! 我发现这个数据库替换成功了,可是后台直接消失了
感谢分享辛苦了,很好的教程
辛苦了,很好的教程
哇,博主牛逼,正好需要这个方法!
辛苦了,很好的教程