现象
Chrome 商店版 2.0.9,一键同步部分网页文章到 WordPress(XML-RPC),草稿能创建、标题正常,但 post_content 为空字符串。
定位
商店版构建产物中,WordPress 驱动的发布函数取正文为:
let n = o.html || o.markdown || ""
只兜 html / markdown,不含 content。当抓取结果只填充 content 字段时,正文即为空。
对照 master 源码,两条路径的兜底链也不一致:
packages/extension/src/background/sync-service.ts L246 归一化:content: article.content || article.html || ''(不含 markdown)
packages/extension/src/adapters/cms/wordpress.ts L434:let content = article.content(不含 html / markdown)
如果某条链路把未经归一化的原始 article 直接交给驱动(商店版的现象正是如此),或抓取结果只有 markdown,同样会发出空正文。
我们的一行修复(已验证)
把驱动的兜底链补全为:
const content = article.content || article.html || article.markdown || ''
用打过这一行补丁的构建重新同步同一批文章,WordPress 草稿正文完整,图片处理等后续流程不受影响。
建议
统一发布链路的兜底顺序为 content || html || markdown:
- 驱动层以
content 优先,同时保留 html、markdown 兜底;
sync-service.ts 归一化处补上 markdown 作为最后兜底。
这样无论上游抓取只给哪种字段,发布到 WordPress 都不会出现空正文。如需要我可以提交 PR。
环境:Chrome 商店版 2.0.9,WordPress 6.x,metaWeblog.newPost。
现象
Chrome 商店版 2.0.9,一键同步部分网页文章到 WordPress(XML-RPC),草稿能创建、标题正常,但
post_content为空字符串。定位
商店版构建产物中,WordPress 驱动的发布函数取正文为:
只兜
html/markdown,不含content。当抓取结果只填充content字段时,正文即为空。对照 master 源码,两条路径的兜底链也不一致:
packages/extension/src/background/sync-service.tsL246 归一化:content: article.content || article.html || ''(不含markdown)packages/extension/src/adapters/cms/wordpress.tsL434:let content = article.content(不含html/markdown)如果某条链路把未经归一化的原始 article 直接交给驱动(商店版的现象正是如此),或抓取结果只有
markdown,同样会发出空正文。我们的一行修复(已验证)
把驱动的兜底链补全为:
用打过这一行补丁的构建重新同步同一批文章,WordPress 草稿正文完整,图片处理等后续流程不受影响。
建议
统一发布链路的兜底顺序为
content || html || markdown:content优先,同时保留html、markdown兜底;sync-service.ts归一化处补上markdown作为最后兜底。这样无论上游抓取只给哪种字段,发布到 WordPress 都不会出现空正文。如需要我可以提交 PR。
环境:Chrome 商店版 2.0.9,WordPress 6.x,
metaWeblog.newPost。