基于子比主题的多平台文章同步插件(没有子比主题也能用~)已更新至最新版本-zibll综合交流社区-zibll子比主题-zibll子比社区

基于子比主题的多平台文章同步插件(没有子比主题也能用~)已更新至最新版本

已更新 详情请看不依赖子比多平台文章同步v1.3.0 · 更新日志(有没有子比都能用)-zibll综合交流社区-zibll子比主题-zibll子比社区

子比多平台文章同步 · 完整介绍

插件名称:子比多平台文章同步(zibll-post-sync) 版本:1.0.0 作者:阿晨

插件是AI全权写的 个人感觉肥肠滴好用 所以直接分享出来了hh

本篇完整的插件介绍也是ai生成的,目前知道连通性测试是无法生效的,但是配置好之后文章可以正常同步~不影响正常使用喵~

演示图片

20260717101715738-40b83c66f46db2048134897ff83c25f7

20260717101716459-1868ed52ba3c0e2ee25be9466d554142

20260717101716423-337080cb15b7d4c0de41ce9cb7cffa09


一、这是什么

子比多平台文章同步是一款用于在多个 WordPress 站点之间自动同步文章的插件。装上它之后,你在主站点发布或编辑一篇文章,改动会在第一时间自动推送到所有已配置的目标站点——不仅同步正文,连分类目录、标签、专题(zibll 的 topics)等分类法也一并同步,保证各站内容结构一致。

它采用「单插件双角色」设计:同一个插件装在每一个参与的站点上,通过后台「角色」切换,即可让它充当主站(推送方)或接收站(接收方),也可以双端并存。两端通过 WordPress 原生 REST 接口通信,并用 HMAC-SHA256 签名 + 时间戳做鉴权,密钥不随请求明文传递。

一句话总结:一处发布,多处同步;改了就同步,删了可选择同步。


二、能解决什么问题

场景

痛点

本插件怎么做

多站运营

同一篇文章要在好几个站手动发一遍

主站一发,其余站自动收到

内容维护

主站改了标题/正文/分类,其他站还是旧的

编辑即推送,接收站原地更新

站点矩阵

几十上百个站,人工同步不现实

支持任意数量目标站,批量推送

海量文章

十万级文章无法一次性同步

分批游标续传,可中途停止、断点重跑

安全风险

同步接口被人乱调

HMAC 签名 + 时间戳防重放 + 来源白名单

多主题环境

有的站装了子比,有的没装

自动降级兼容原生设置页,无子比也能用


三、核心功能特性

  1. 单插件双角色 每个站点都安装同一个插件,后台「本站角色」设为 主站点 / 接收站 / 双端 即可。无需为不同角色装不同插件。

  2. 全自动实时同步 监听 WordPress save_post 钩子:发布、保存草稿、以及**任何编辑(含分类/标签/专题变更)**都会触发推送。

  3. 可选的删除同步 主站删除文章时,可配置是否同步删除其它站的对应文章。仅删除「同步来的文章」,绝不会误删对方站点的原创内容。

  4. 安全的通信鉴权

    • 每个请求带 X-Zibll-Sync-Signature(HMAC-SHA256)与 X-Zibll-Sync-Timestamp

    • 接收端校验签名与时间戳(±300 秒有效,防重放攻击);

    • 密钥只在两端本地保存,不随 HTTP 请求明文传输;

    • 可选「来源白名单」,只允许指定主站地址推送。

  5. 分类法按 slug 映射 分类目录(category)、标签(post_tag)、专题(topics)按 slug 在接收站创建或更新后挂载,保证多站分类结构一致(slug 不一致则新建,不会错挂)。

  6. 作者按邮箱映射 主站文章作者的邮箱随 payload 发送,接收站按邮箱匹配本地用户;匹配不到时回退到「默认作者」设置,避免文章变成「匿名」。

  7. 特色图自动搬运 主站特色图地址随文章发送,接收站自动下载并导入到自己的媒体库,再设为特色图。完美兼容对象存储插件(见下文「对象存储兼容性」)。

  8. 防回环(不会互相推送死循环) 接收端写入期间打「导入中」标记,且不会把「同步来的文章」反向推回主站。即便双端模式也不会无限循环。

  9. 去重更新(不会生成重复文章) 每篇同步来的文章都记录来源标识(主站地址 + 主站文章 ID)。下次再收到同一篇,接收端会原地更新而非新建——可放心重复触发同步、断点续跑,文章不会越同步越多。

  10. 手动分批同步(十万级友好) 提供「立即同步全部已发布文章」按钮,采用前端驱动的分批游标续传:每批默认 50 篇(可配 1–200),自动续下一批并显示进度条,可中途停止。

  11. 条件筛选同步 手动同步支持按分类 / 标签 / 专题 / 发布时间范围筛选后再分批推送,只同步你关心的那部分文章。

  12. 目标站连通性测试 一键「测试所有目标站连通性」,实时回报每个目标站是否可达、签名是否通过(返回具体 HTTP 状态便于排查)。

  13. 统一品牌后台菜单 所有「阿晨出品」的插件会自动归位到同一个顶级菜单 「Hoarfall 工具」 下,后台不再杂乱;插件列表页也带「设置」快捷跳转。

  14. 非子比主题兼容 若站点未启用子比主题(缺少 Codestar Framework),设置页会自动降级为原生 WordPress 设置页,设置界面始终可访问,配置数据与原 CSF 页面完全互通。

  15. 调试日志 可开启调试日志,记录推送成功/失败、目标站响应,便于排障。


四、工作原理

┌──────────────┐                              ┌──────────────────┐
│   主站点      │   save_post / 手动同步        │   接收站          │
│  (推送方)     │ ───────────────────────────▶ │  (接收方)         │
│              │   POST /wp-json/             │                  │
│ zibll_ps_    │   zibll-post-sync/v1/receive │ REST 路由校验:    │
│ push_post    │   带 HMAC 签名+时间戳         │  ① 签名/时间      │
│              │                              │  ② 来源白名单      │
│ 构建 payload │                              │  ③ 查重(去重更新)  │
│ + HMAC 签名  │                              │  ④ 新建/更新文章   │
└──────────────┘                              │  ⑤ 映射分类法      │
                                              │  ⑥ 导入特色图      │
                                              │  ⑦ 打来源 meta     │
                                              └──────────────────┘
  • 推送端includes/sender.php):监听保存/删除钩子 → 对每一个目标站构建 payload → 用目标站密钥生成 HMAC 签名 → wp_remote_post 到目标站的 wp-json/zibll-post-sync/v1/receive

  • 接收端includes/receiver.php):注册 REST 路由 → 校验签名与时间戳 → 校验来源白名单 → 按来源标识查重 → wp_update_post / wp_insert_post → 映射分类法 → 导入特色图 → 写入来源 meta(供去重与防回环)。


五、同步内容详解

会自动同步的字段

字段

说明

标题 post_title

文章标题

别名 post_name

URL slug

正文 post_content

文章主体

摘要 post_excerpt

摘要

发布状态 post_status

发布/草稿等

发布时间 post_date

保持与来源一致

评论/引用状态

comment_status / ping_status

作者

按邮箱匹配,失败回退默认作者

特色图

URL + 标题 + alt + 描述,自动下载入库

分类法

分类目录 / 标签 / 专题(按 slug 创建或挂载)

正文里内嵌的 <img> 链接仍指向主站(通常为公开可读的对象存储地址),接收站可正常显示。

关于 SEO(重要且如实说明)

文章「本体」层面的 SEO 要素会同步:标题、URL slug、正文、摘要、分类标签、特色图(常作社交分享图)都会过去,接收站文章有完整的收录基础。

但 SEO 插件单独设置的专项 meta 当前版本(1.0.0)不自动同步,例如:

  • 单独的 Meta 标题 / Meta 描述 / 焦点关键词(Yoast、Rank Math、AIOSEO 等存于 post_meta);

  • noindex / nofollow 指令;

  • canonical 规范链接、结构化数据(schema)。

原因:这些字段各家插件 key 名不同,盲目全量同步既可能带过去不该带的字段,也要求接收站装同款 SEO 插件才能读取。

⚠️ 多站同步的 SEO 风险(重复内容):主站与接收站内容一致,搜索引擎可能判为重复内容、稀释权重。常见处理:

  • 方案 A(镜像/备份用途):在接收站 SEO 插件中把「同步来的文章」设为 noindex,只给人看不收录;

  • 方案 B(也要收录):让接收站 SEO 插件把 canonical 指向主站原文,告诉搜索引擎「真正出处是主站」。

后续版本计划提供「SEO meta 白名单同步」(指定 _yoast_wpseo_ / _rankmath_ 等前缀才复制)与「同步来的文章自动 noindex」开关。如需提前支持,可联系作者。


六、安装指南

  1. 下载插件,得到 zibll-post-sync/ 目录。

  2. 将整个目录上传到每一个参与站点wp-content/plugins/

  3. 在 WordPress 后台「插件」中启用「子比多平台文章同步」。

  4. 启用后,进入 Hoarfall 工具 → 文章同步(或插件列表点「设置」)进行配置。

要求:主站与接收站均为 WordPress 5.8+ / PHP 7.4+。接收端依赖 WordPress REST,因此「其他网站」需同为 WordPress 站点。


七、配置指南

典型拓扑:1 个主站 + N 个接收站

主站点(角色 = 主站点)

  1. 启用「同步」开关。

  2. 在「目标站点」里逐个添加:

    • 站点地址:接收站的完整 URL(如 https://www.example.com/);

    • 接收密钥:与接收站设置的密钥完全一致

  3. 勾选要同步的文章类型与分类法(默认含分类、标签、专题)。

  4. 按需开启「删除也同步」。

  5. 点「测试所有目标站连通性」确认通信正常。

接收站(角色 = 接收站)

  1. 启用「接收」开关。

  2. 生成或填写一段复杂的「接收密钥」(建议 32 位以上随机串)。

  3. 把这段密钥原样填回主站对应目标站的「接收密钥」字段。

  4. 设置「允许接收的分类法」(默认全开)。

  5. 可选「来源白名单」:仅允许指定主站地址推送(留空表示接受任何带正确密钥的请求)。

双端模式:某站既是主站又接收别人推送时,角色选「双端」即可。

手动同步(分批)

进入设置页「手动操作」区:

  • 每批数量:默认 50,可填 1–200(目标站慢时建议调小,如 10–20)。

  • 筛选条件:可仅同步某分类 / 某标签 / 某专题 / 某发布时间段。

  • 点击 「立即同步全部已发布文章」:前端自动分批续传,显示进度条与「成功/失败」统计;运行中再次点击按钮即可中途停止


八、对象存储兼容性

若主站装有对象存储插件(图片自动上传到对象存储桶),不影响同步,反而更省事

  • 发送端取特色图用的是 wp_get_attachment_url(),返回的是桶/CDN 地址,payload 里只带一个 URL,不传图片二进制,轻量稳定。

  • 接收端拿着 URL 下载并导入自己的媒体库;若接收站也装对象存储插件,落盘后会自动再上传到它自己的桶。

⚠️ 唯一注意:若对象存储开启防盗链(referer 校验)或私有桶(需签名 URL),接收端服务器下载会拿不到 referer → 403。请将接收站服务器 IP 加入白名单,或保持「公有读」。


九、安全与鉴权

  • 传输签名:HMAC-SHA256,密钥不随请求明文出现。

  • 防重放:时间戳 ±300 秒有效,过期请求直接拒绝。

  • 来源白名单:可选,仅放行指定主站地址。

  • 权限校验:手动操作需 manage_options 权限 + WordPress nonce。

  • 最小写入面:删除同步仅作用于「同步来的文章」,不会碰对方原创。


十、品牌菜单与多插件管理

本插件遵循「阿晨出品」统一规范:

  • 所有阿晨插件自动归位到顶级菜单 「Hoarfall 工具」slug = hoarfall-tools);

  • 该菜单首页会自动扫描已激活的阿晨插件并列出各自的「设置」入口;

  • 插件列表页带「设置」快捷链接,直达本插件设置页。

即便只装了这一款插件,菜单与跳转也正常工作。


十一、兼容性与要求

项目

要求

WordPress

≥ 5.8

PHP

≥ 7.4

主站/接收站

均为 WordPress(接收端依赖 WP REST)

子比主题

可选。装了用美观的 CSF 设置页;没装自动降级原生设置页

SEO 插件

不强制。基础字段同步;专项 meta 见第五节说明


十二、常见问题(FAQ)

Q1:接收站已有相同文章,再同步会重复吗? 不会。接收端按「主站地址 + 主站文章 ID」查重,命中则原地更新。仅当某篇是你在接收站手工创建(无来源 meta)的同内容稿件时才可能重复——这是故意设计,避免误改对方原创。

Q2:主站有对象存储,会影响吗? 不影响,反而更省心。详见第八节。

Q3:没装子比主题能用吗? 能。设置页会自动降级为原生 WordPress 设置页,配置数据互通。

Q4:十万篇文章怎么同步? 用「立即同步全部」按钮的分批续传(游标 + 进度条),可中途停止、断点重跑,不会超时或内存溢出。

Q5:SEO 会同步吗? 标题/URL/正文/分类/特色图等会同步;SEO 插件的专项 meta(描述、关键词、canonical 等)当前版本不自动同步,详见第五节。

Q6:删主站文章,接收站会一起删吗? 仅当开启「删除也同步」且接收站那篇是「同步来的文章」时才会删,不会误删对方原创。

Q7:多个目标站,一个慢会影响其它吗? 不会。每个目标站独立推送,单站失败只记日志,不影响其它站与后续文章。


十三、目录结构

zibll-post-sync/
├── zibll-post-sync.php      # 入口:插件头、常量、加载调度、设置跳转
├── readme.txt               # WordPress 标准说明
├── assets/
│   └── js/
│       └── admin.js         # 后台 JS:分批续传、进度条、连通性测试
└── includes/
    ├── functions.php        # 通用函数:签名/校验、分类法映射、图片导入、来源查重、作者映射
    ├── sender.php           # 发送端:save_post/delete 钩子、逐目标站推送
    ├── receiver.php         # 接收端:REST 路由、校验、新建/更新、删除同步
    ├── admin-options.php    # 设置页(Codestar Framework,子比主题)
    ├── settings-native.php  # 设置页(原生 WP,非子比主题降级)
    ├── ajax.php             # 手动同步 / 连通性测试的 Ajax 处理
    └── brand-menu.php       # 「Hoarfall 工具」统一顶级菜单

十四、更新日志

v1.0.0

  • 单插件双角色(主站 / 接收站 / 双端)

  • 自动同步发布与编辑(含分类法变更)、可选删除同步

  • HMAC-SHA256 签名 + 时间戳防重放鉴权、来源白名单

  • 分类法按 slug 映射、作者按邮箱映射、特色图自动搬运

  • 防回环 + 去重更新

  • 手动分批游标续传(支持分类/标签/专题/日期筛选)

  • 目标站连通性测试

  • 统一「Hoarfall 工具」品牌菜单 + 插件列表「设置」跳转

  • 非子比主题原生设置页降级兼容


十五、关于作者

本插件由 阿晨 开发并维护。

如果你需要定制功能(如 SEO meta 同步、自动 noindex、更多文章类型/自定义字段支持),欢迎通过上述渠道或私信联系。

请登录后发表评论

    • 猫娘的头像-zibll子比社区代理会员猫娘徽章-人气佳作-zibll子比社区等级-LV6-zibll子比社区作者1
      • 猫娘的头像-zibll子比社区代理会员猫娘徽章-人气佳作-zibll子比社区等级-LV6-zibll子比社区作者1
      • 猫娘的头像-zibll子比社区代理会员猫娘徽章-人气佳作-zibll子比社区等级-LV6-zibll子比社区作者1