### [批量修改文章下载权限](https://www.bber.cn/article/1782) **Published:** 2025-12-26T20:30:41 **Author:** 哔哔一二 **Excerpt:** 此代码仅可以对文章ID范围进行修改,例如文章id:1-100 的范围,无法对指定分类进行修改。其实比较鸡肋,但对于一段时间一直写同一种类型文章的批量权限有点帮助。 但这是春哥给别人写的,我觉得比较保险。 我尝试了将此代码修改为分类下的文章修 此代码仅可以对文章ID范围进行修改,例如文章id:1-100 的范围,无法对指定分类进行修改。其实比较鸡肋,但对于一段时间一直写同一种类型文章的批量权限有点帮助。 但这是春哥给别人写的,我觉得比较保险。 我尝试了将此代码修改为分类下的文章修改,放在文章末尾 #### 使用方法: - 设置好你要修改的文章id范围,然后设置你要修改的权限,只能单独一个权限 - 将此代码放到子主题,page目录下创建一个php文件将代码放进去,打开浏览器访问这个php文件即可。 - 访问地址示例:www.xxxx.cn/wp-content/themes/b2child/Pages/aaa.php 'post',//文章形式是post 'post\_status'=>'publish',//文章状态是已发布 'posts\_per\_page'=>-1//所有文章,如果文章数量过多(几万篇),可能速度很慢 ); $the\_query = new WP\_Query($arg); if ( $the\_query->have\_posts() ) { while ( $the\_query->have\_posts() ) { $the\_query->the\_post(); $id = get\_the\_id(); $res = false; //要设置的文章ID范围 if($id >=1184 && $id <= 1349){ $downs = get\_post\_meta($id,'b2\_single\_post\_download\_group',true); if(!empty($downs)){ $save = false; foreach ($downs as $k => $v) { if(isset($downs\[$k\]\['rights'\])){ $downs\[$k\]\['rights'\] = 'all|free'; $save = true; } }unset($v); if($save){ update\_post\_meta($id,'b2\_single\_post\_download\_group',$downs); } } } } echo '完成'; wp\_reset\_postdata(); } else { echo '没有文章'; } // 结束执行 exit; ?> ### 通过分类ID批量修改指定分类下的文章下载权限|使用方法同上 在你拿走这个功能时,我想告诉你一点我的想法: 1、在你用此代码之前,我希望你一定要备份好自己的网站数据库后,再进行修改 2、我希望熬的这3个小时成果有帮到你,如果你用了有问题可以好好交流,不要恶言相向。 3、代码我测试了没问题,但我无法对你的数据进行保障,如果你没有任何代码基础,也对我并不放心,希望你停止使用 \[content\_hide\] ⚠️ 安全验证失败!请刷新页面重试。'; } else { // 接收并过滤输入 $target\_category\_id = intval($\_POST\['category\_id'\]); $rights\_text = sanitize\_textarea\_field($\_POST\['rights\_value'\]); // 基础验证 if ($target\_category\_id <= 0) { $submit\_result = '
⚠️ 分类ID必须是大于0的数字!
'; } elseif (empty(trim($rights\_text))) { $submit\_result = '
⚠️ 权限值不能为空!
'; } else { // 处理多行文本为带\\r\\n的字符串(匹配数据库格式) $rights\_lines = preg\_split('/\\r\\n|\\r|\\n/', $rights\_text); $valid\_lines = \[\]; foreach ($rights\_lines as $line) { $line = trim($line); if (!empty($line)) { $valid\_lines\[\] = $line; } } $target\_rights = implode("\\r\\n", $valid\_lines); // 执行批量修改 $arg = array( 'post\_type' => 'post', 'post\_status' => 'publish', 'posts\_per\_page' => -1, 'no\_found\_rows' => true, 'cat' => $target\_category\_id, 'fields' => 'ids', ); $post\_ids = get\_posts($arg); $total\_posts = count($post\_ids); $has\_field\_posts = 0; $updated\_posts = 0; $log = \[\]; if ($total\_posts > 0) { foreach ($post\_ids as $post\_id) { $downs = get\_post\_meta($post\_id, 'b2\_single\_post\_download\_group', true); $log\[\] = "文章ID {$post\_id}:"; if (empty($downs)) { $log\[\] = " → 无b2\_single\_post\_download\_group字段 → 跳过"; continue; } $has\_field\_posts++; $save = false; foreach ($downs as $k => $v) { if (isset($downs\[$k\]\['rights'\])) { $old\_value = $downs\[$k\]\['rights'\]; $downs\[$k\]\['rights'\] = $target\_rights; $save = true; // 日志优化:换行符转为可视化的「↵」 $log\_old = str\_replace("\\r\\n", " ↵ ", $old\_value); $log\_new = str\_replace("\\r\\n", " ↵ ", $target\_rights); $log\[\] = " → 原rights值:{$log\_old}"; $log\[\] = " → 新rights值:{$log\_new}"; } } if ($save) { update\_post\_meta($post\_id, 'b2\_single\_post\_download\_group', $downs); $updated\_posts++; $log\[\] = " → 保存成功"; } else { $log\[\] = " → 无rights字段 → 跳过"; } } // 结果展示 $show\_rights = str\_replace("\\r\\n", " ↵ ", $target\_rights); $submit\_result = '
✅ 执行完成!
详细日志(↵代表换行):
'.implode('
', $log).'
'; } else { $submit\_result = '
⚠️ 分类ID '.$target\_category\_id.' 下没有找到已发布的文章!
'; } } } } // 3. 前台表单界面(光标行精准修改) ?> B2主题文章下载权限批量修改工具

B2主题文章下载权限批量修改工具

说明:修改前备份数据库!不仅要服务器备份,拖到你电脑本地一份!避免修改数据酿成大错!

我一直认为改数据是很重要的事情,如果有免费的快照,大改之前去服务商那里备份一个服务器快照!

提示:1. 按钮修改光标所在行内容;2. 积分/付费后缀需手动补充数值(如credit=10);3. 自动过滤空行
  \[/content\_hide\] **Tags:** 功能插件 **Categories:** 主题美化 ---