插件简介

CategoryBatchManager 是一款 Typecho 后台文章分类批量管理插件,主要功能:

  • 文章管理列表 中提供批量操作:

    • “移动到分类…”:将选中文章的分类替换为所选分类;
    • “添加分类…”:在原有分类基础上追加新分类;
    • “移除分类…”:从文章已有分类中移除某些分类。
  • 在文章列表每一行的 “分类”列 尾部增加一个小的 “分类” 链接:

    • 点击可快速为单篇文章调整分类。

整体操作基于 AJAX 完成,避免整页刷新,提升后台管理效率。

环境要求

  • Typecho:版本 1.2.1
  • PHP:版本 7.0.0 及以上(兼容 PHP 8.0)

插件在激活时会自动检查当前环境版本,如果版本过低,会在后台插件页给出明确错误提示,防止在不兼容环境中运行。

安装步骤

  1. 将插件代码放入 Typecho 的插件目录:

    • 路径结构如下:

      usr/
        plugins/
          CategoryBatchManager/
            Plugin.php
            Action.php
  2. 登录 Typecho 后台 → 控制台 → 插件,找到:

    • 插件名称:CategoryBatchManager(文章分类批量管理)
  3. 点击 “启动” 插件:

    • 如果 PHP / Typecho 版本不满足要求,会直接提示:

      • CategoryBatchManager 需要 PHP 7.0 或更高版本
      • CategoryBatchManager 需要 Typecho 1.2.1
    • 符合要求则启动成功。

功能使用说明

1. 批量分类操作

  1. 打开后台:控制台 → 文章 → 所有文章
  2. 在列表顶部/底部的 “选中项” 下拉菜单中,你会看到新增的 3 个选项:

    • “移动到分类…”
    • “添加分类…”
    • “移除分类…”
  3. 使用步骤:

    1. 勾选需要操作的多篇文章(左侧复选框)。
    2. 点击其中一个批量分类操作(例如“移动到分类…”)。
    3. 页面会弹出一个分类选择弹窗,特点:

      • 列出所有分类,按照层级缩进展示,支持子分类;
      • 顶部带有 搜索框,输入可筛选分类;
      • 支持多选分类(按住 Ctrl/多次勾选)。
    4. 选择好目标分类后点击 “确定”

      • 插件会通过 AJAX 请求 /action/category-batch
      • 后台更新 table.relationshipscid-mid 的分类关系;
      • 前端会直接更新列表中对应文章的“分类”列,无需刷新整页。
  4. 三种操作的具体逻辑:

    • 移动到分类(move)

      • 对选中文章:先删除该文章所有“分类”关联(仅限 metas.type = 'category' 的关系),再写入你新选择的分类。
      • 适用于“文章从 A 版块整体迁移到 B 版块”。
        例如:将此三篇文章从实践教程移动到性能测试
        2026-01-19T13:14:37.png
        2026-01-19T13:15:46.png
        2026-01-19T13:16:30.png
    • 添加分类(add)

      • 在当前已有分类基础上追加你新选择的分类;
      • 已存在的关系不会重复添加。
      • 适用于“批量为一批文章增加一个额外分类”。
        例如:为飞牛nas分类下的三篇文章添加环境配置分类
        2026-01-19T13:19:13.png
        2026-01-19T13:19:44.png
        2026-01-19T13:20:09.png
    • 移除分类(remove)

      • 仅删除你选中的那些分类与文章的关系;
      • 未勾选的其它分类不受影响。
      • 适用于“批量清理某个分类下的文章归属”。
        例如:移除上面加的环境配置分类
        2026-01-19T13:20:57.png
        2026-01-19T13:21:22.png
        2026-01-19T13:21:40.png

2. 单篇文章快速分类修改

文章列表的“分类”列 中,每一行分类的后面会有一个小的 灰色“分类” 链接(字体较小):

  1. 点击这一行的小“分类”链接:

    • 插件会自动读取当前这一篇文章所属的分类(解析该单元格内原有的分类链接 URL 中的 category=mid 参数)。
    • 弹出与批量操作相同的分类选择弹窗。
    • 弹窗内会 预先勾选该文章当前的分类
  2. 在弹窗中重新勾选你想要的分类,然后点击 “确定”

    • 对该篇文章执行 “移动到分类” 操作,即覆盖原分类关系(可单选可多选)。
    • 列表中的这一行“分类”列会立即更新。

这个功能特别适合对少数文章进行微调,而不必进入 write-post.php 编辑页面。
2026-01-19T13:25:47.png
2026-01-19T13:27:36.png
2026-01-19T13:27:52.png


权限与安全

  • 所有批量操作都基于 Typecho 的后台权限体系:

    • 仅当用户已登录并且具备 编辑及以上权限$user->pass('editor', true))时,才允许调用批量分类接口。
  • 后端接口路径:

    • POST /action/category-batch
    • 参数:

      • do=batch
      • op=move|add|remove
      • cid[]:文章 ID 列表
      • mid[]:分类 ID 列表
  • 插件只会操作 metas.type = 'category' 的关系,不会影响标签等其它 metas

常见问题

  • 看不到新增的批量菜单项?

    • 确认已启动 CategoryBatchManager 插件;
    • 确认当前页面是 manage-posts.php(文章管理列表),插件只在这个页面注入 JS/HTML;
    • 清理浏览器缓存后再试。
  • 分类弹窗里没有任何分类?

    • 检查后台是否已经创建了分类;
    • 插件通过 \Widget\Metas\Category\Rows 获取分类数据,与编辑文章页面的分类列表是同一来源。
  • 操作后分类没变?

    • 看浏览器控制台是否有 AJAX 请求报错;
    • 检查当前登录用户是否拥有 editor 以上权限。

下载地址

此处内容需要评论回复后(审核通过)方可阅读。

最后修改:2026 年 01 月 19 日
如果觉得我的文章对你有用,请随意赞赏
END
本文作者:
文章标题:CategoryBatchManager - Typecho后台文章分类批量管理插件
本文地址:https://blog.ybyq.wang/archives/1459.html
版权说明:若无注明,本文皆Xuan's blog原创,转载请保留文章出处。