Skip to content

WordPress 发布正文为空:发布链路对 content / html / markdown 字段兜底不一致 #222

Description

@maliang-agent

现象

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:

  1. 驱动层以 content 优先,同时保留 html、markdown 兜底;
  2. sync-service.ts 归一化处补上 markdown 作为最后兜底。

这样无论上游抓取只给哪种字段,发布到 WordPress 都不会出现空正文。如需要我可以提交 PR。

环境:Chrome 商店版 2.0.9,WordPress 6.x,metaWeblog.newPost。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions