
一、插件是什么
这是一套专为日主题(RiPro)WordPress站点开发的跨站文章同步工具,分为两个插件配合使用:
A站同步发送端 — 安装在源站(有内容的那个站),负责暴露数据接口,被动等待别人来取数据。
B站同步接收端 — 安装在目标站(要同步内容的站),主动拉取A站的文章,自动下载图片、创建分类、写入数据库。
两个插件配合,就能实现:A站发了什么文章,B站一键同步过来,全程自动,不需要手动复制粘贴,不需要手动传图片。
说白了就是:A站是”卖家”,B站是”买家”,买家拿着钥匙(API密钥)去卖家仓库里取货(文章数据),取回来放到自己仓库里(B站数据库),图片也一并搬过来。
二、能同步哪些内容
很多同步插件只同步标题和正文,这个插件做到了全字段同步,具体包括:
基础内容:
- 文章标题
- 文章正文(完整HTML,包括样式、短代码等)
- 文章摘要
- 文章别名(slug)
- 发布时间(保持A站原始时间)
- 文章格式(标准、图片、视频、画廊等)
分类和标签:
- 所有分类 — A站有的分类B站没有,会自动创建,包括分类名称、别名、描述
- 所有标签 — 同理,自动创建不存在的标签
- 多分类支持 — 一篇文章属于多个分类也没问题
图片:
- 缩略图(特色图片)— 下载到B站媒体库,设置为B站文章的特色图片
- 正文内所有图片 — 全部下载到B站本地,正文HTML里的URL自动替换为B站地址
- 懒加载图片 — 自动识别data-src属性的图片
- srcset响应式图片 — 也能识别和下载
- 图片去重 — 同一张图在多篇文章里出现,只下载一次
日主题/RiPro专用字段(重点):
- cao_price — 文章价格
- cao_vip_rate — VIP折扣比例
- cao_is_boosvip — 是否老板VIP免费
- cao_close_novip_pay — 是否关闭非VIP付费
- cao_paynum — 已购买人数
- cao_status — 付费状态
- cao_downurl_new — 下载链接
- cao_info — 资源信息
- cao_demourl — 演示地址
- cao_diy_btn — 自定义按钮
- cao_video — 视频地址
- cao_is_video_free — 视频是否免费
- video_url_new — 新版视频地址
- _ripro_post_media — 附件信息
- keywords — SEO关键词
- description — SEO描述
也就是说,同步过来的文章和A站一模一样,价格、下载链接、VIP设置全部到位,B站可以直接卖。
三、v2.0 新增功能
⚡ 断点续传 — 同步到一半刷新页面不会从头来了
之前的版本有个问题:同步500篇文章,跑到第200篇的时候手抖刷新了一下页面,或者浏览器崩了,就得从头再来,已同步的又要一个个跳过,浪费大量时间。
v2.0 彻底解决了这个问题:
- 每处理完一篇文章,进度实时保存到数据库
- 刷新页面后,页面顶部会出现黄色提醒条,显示”有未完成的同步任务”
- 点击”继续同步”按钮,直接从上次停下的地方继续
- 同步500篇跑到第300篇关了浏览器,明天打开继续从301开始
🌙 后台运行 — 关掉浏览器也能继续同步
同步大量文章时,前台跑着不能关浏览器,电脑还不能休眠,很不方便。v2.0 加入了后台运行模式:
- 点击进度面板底部的”🌙 后台”按钮
- 同步任务交给WordPress的定时任务(WP-Cron)接管
- 每60秒自动处理1篇文章
- 可以关掉浏览器、关掉电脑,同步照常进行
- 再次打开同步页面,自动检测到后台任务在跑,显示实时进度
- 随时可以切回前台控制
⚡ 智能等待 — 已同步的文章不浪费时间
- 检查发现文章已存在(跳过)→ 只休息 2秒
- 真正同步成功一篇 → 休息 10秒(防止请求过快被限制)
- 页面上显示实时倒计时:10…9…8…7…6…5…4…3…2…1… 继续
- 不用干等10秒看着画面不动了
📋 预过滤 — 启动时就排除已同步的
- 启动同步时,先一次性检查所有文章ID
- 已同步过的直接排除,不进入队列
- 500篇里有400篇已同步 → 实际只处理100篇
- 比之前一篇一篇检查跳过快了不知道多少倍
四、安装教程
第一步:A站安装发送端插件
- 1.下载
A站同步发送端.zip - 2.登录A站WordPress后台
- 3.左侧菜单 → 插件 → 安装插件 → 上传插件
- 4.选择zip文件,点击”现在安装”
- 5.安装完成后点击”启用插件”
- 6.左侧菜单多出一个 📤 A站同步,点进去
- 7.设置一个API密钥(可以留空自动生成),点击”保存密钥”
- 8.页面上会显示A站地址和密钥,先记下来,后面B站要用
第二步:B站安装接收端插件
- 1.下载
B站同步接收端.zip - 2.登录B站WordPress后台
- 3.左侧菜单 → 插件 → 安装插件 → 上传插件
- 4.选择zip文件,点击”现在安装”
- 5.安装完成后点击”启用插件”
- 6.左侧菜单多出一个 📥 B站同步,点进去
第三步:配置连接
- 1.在B站同步页面,A站地址栏填入A站的域名,例如:
https://a-zhan.com(末尾不要带/) - 2.API密钥栏填入A站发送端页面显示的密钥(必须一模一样)
- 3.点击”💾 保存连接设置”
- 4.点击”🧪 测试连接”,看到绿色的”连接成功”就说明没问题
第四步:开始同步
方式一:一键同步全部
- 点击”🚀 开始同步全部”按钮
- 插件自动拉取A站所有文章列表
- 自动排除已同步的
- 逐篇处理,进度面板实时显示
方式二:按时间同步
- 选择一个日期,只同步该日期之后发布的文章
- 适合增量同步,比如只同步最近一周的新文章
方式三:同步单篇
- 输入A站某篇文章的ID
- 只同步这一篇
- 适合补同步某篇遗漏的文章
五、同步速度参考
| 文章类型 | 单篇耗时 | 100篇预估耗时 |
|---|---|---|
| 纯文字无图片 | 1~2秒 | 约5分钟(含间隔) |
| 带3~5张图片 | 5~10秒 | 约15~20分钟 |
| 带10+张图片 | 15~30秒 | 约40~60分钟 |
| 全部已存在(跳过) | <1秒 | 约3分钟 |
说明:耗时主要花在图片下载上,图片越多越慢。同步间隔是为了防止请求过快被服务器拦截,属于正常机制。如果文章量大建议用后台运行模式挂着慢慢跑。
六、后台运行模式说明
同步1000篇文章,前台跑可能要几个小时,一直开着浏览器不太现实。后台运行模式就是为了解决这个问题:
开启方式:
- 在同步进度面板底部,点击”🌙 后台”按钮
- 确认后,前台循环停止,WP-Cron定时任务接管
- 进度面板切换显示为”🌙 后台运行中”
运行机制:
- WordPress的WP-Cron每60秒触发一次
- 每次触发处理1篇文章(同步或跳过)
- 处理结果写入数据库,下次打开页面能看到最新进度
注意事项:
- WP-Cron依赖网站访问来触发,如果站点访问量很低,cron可能不那么准时
- 解决方案:在服务器设置真实cron,每分钟访问一次
https://你的域名/wp-cron.php - 或者用免费的在线cron服务(如 cron-job.org)每分钟ping你的网站
- 如果站点每天有几百次以上访问,WP-Cron基本能正常工作
- 赶时间就前台跑,不赶时间就后台挂着慢慢来
切回前台:
- 再次打开B站同步页面,如果检测到后台任务在运行
- 页面顶部会显示黄色提醒条,显示当前进度
- 点击”继续同步”可以切回前台控制
- 也可以在进度面板点击”☀ 前台”按钮切换
七、图片同步原理
很多人关心图片到底有没有真的下载到B站服务器,这里详细说明:
下载流程:
- 1.接收端从A站API获取文章数据,里面包含所有图片的URL列表
- 2.先检查B站数据库,这张图片之前下载过没有(防重复下载)
- 3.没有下载过 → 通过A站的图片代理接口下载(解决防盗链问题)
- 4.代理下载失败 → 直接从原始URL下载(兜底方案)
- 5.下载的临时文件通过WordPress的
media_handle_sideload导入媒体库 - 6.WordPress自动生成缩略图(thumbnail / medium / large等多种尺寸)
- 7.图片的原始URL记录到数据库,下次遇到同一张图直接复用
URL替换:
- 同步前:正文里的图片指向A站 →
https://A站.com/wp-content/uploads/2024/01/pic.jpg - 同步后:自动替换为B站本地地址 →
https://B站.com/wp-content/uploads/2026/06/pic.jpg - 同步完成后,B站文章不再依赖A站,A站关了也不影响B站
验证方法:
- 同步完成后,去B站后台 → 媒体 → 媒体库
- 你会看到所有图片都在里面
- 打开B站的文章,图片显示的是B站自己的域名
- 即使A站挂了,B站的图片依然正常显示
八、适用场景
- 日主题/RiPro主题建镜像站 — 最常见的用途,把主站内容同步到镜像站
- 多站点内容分发 — 一篇内容同步到多个站点
- 站点迁移 — 旧站搬到新站,包括所有图片和设置
- 内容备份 — 定期同步作为异地备份方案
- 资源站搬运 — 别人的资源站内容搬到自己站上
九、常见问题
Q:同步后A站修改了文章,B站会自动更新吗? A:不会。同步是单次操作,同步过来的文章是B站的独立副本。如果A站修改了文章,需要先删除B站那篇,然后重新同步。
Q:同步过去的文章付费功能正常吗? A:正常。所有日主题的付费相关字段(价格、下载链接、VIP设置等)都会完整同步过来。插件还会自动检测,如果有价格且有下载链接,会自动设置付费状态为开启。
Q:A站和B站的主题不一样能同步吗? A:基础内容(标题、正文、图片、分类、标签)可以同步到任何WordPress站点。但日主题专用字段(价格、下载链接等)只有B站也是日主题/RiPro主题才有意义。
Q:会影响A站的性能吗? A:影响极小。B站是通过REST API读取数据,和正常访问网页没有本质区别。每次只请求一篇文章的数据,不会一次性加载大量数据。
Q:同步到一半报错了怎么办? A:v2.0有断点续传功能,进度已经保存了。刷新页面,点击”继续同步”即可从上次的位置继续。失败的那篇会被标记为失败,不影响后续文章。
Q:图片下载失败怎么办? A:图片下载失败不会导致整篇文章同步失败,文章还是会创建,只是那张图片缺失。可能是网络问题或图片太大超时。可以手动把图片传到B站媒体库,然后编辑文章替换。
Q:支持同步多少篇文章? A:没有硬性限制。只要A站有,就能同步。100篇、1000篇、10000篇都行,区别只是时间长短。建议大量同步用后台运行模式。
Q:需要两站的WordPress版本一样吗? A:不需要。只要都是WordPress 5.0以上、PHP 7.4以上就行。
Q:两个插件需要同时启用吗? A:是的。A站启用发送端,B站启用接收端。同步的时候两个站的插件都要处于启用状态。
十、技术参数
| 项目 | 说明 |
|---|---|
| 兼容主题 | 日主题、RiPro及所有衍生主题,通用WordPress主题也可使用基础同步功能 |
| WordPress版本 | 5.0 及以上 |
| PHP版本 | 7.4 及以上 |
| 认证方式 | API密钥(X-Sync-Key Header 或 URL参数) |
| API协议 | WordPress REST API(JSON格式) |
| 图片代理 | 通过发送端代理下载,解决防盗链;失败后自动直连下载 |
| 去重机制 | 通过 _sync_source_id 字段标记,已同步的文章不会重复创建 |
| 图片去重 | 通过 _sync_original_url 字段记录,同一张图只下载一次 |
| 进度存储 | wp_options 数据库表,断点续传不丢失 |
| 后台任务 | WP-Cron 定时任务,60秒/篇 |
| 同步间隔 | 前台:跳过2秒 / 成功10秒(带倒计时);后台:60秒 |
| 日志系统 | 文件日志 wp-content/sync-receiver.log,自动轮转,最大5MB |
by 最骚源码 zuisao.com

评论(0)