SuperAPI AI 工具集

wordpress-com-webhooks

前端与建站

查看项目

更新于 10-15 22:14

技能介绍

用途:接收 WordPress.com(Automattic 托管服务)原生 Webhooks 的投递。管理员在「设置 → Webhooks」中选择动作(hook)、勾选要包含的字段并填入 URL,动作触发时 WordPress.com 会将所选字段 POST 到该 URL。

主要能力与载荷特点:投递无签名,没有 HMAC、签名头、密钥、时间戳或握手,无法做签名校验;也没有公开的源 IP 白名单。请求体是扁平的 application/x-www-form-urlencoded 键值集合,不是 JSON 信封,没有 event id;区分事件靠 hook 字段(值为动作名)。所有字段可选(除 hook 外),值均为字符串,需显式转换;post_category 等数组字段可能以 bracket 编码到达(如 post_category[0]=1)。

事件与字段:仅三个 hook——publish_post、publish_page(含 ID、post_title、post_status、post_url、post_author 等)与 comment_post(含 comment_ID、comment_post_ID、comment_approved、comment_author、comment_content 等)。comment_approved 为字符串:1 已批准、0 待审、spam 垃圾。未知 hook 应记录并仍返回 2xx。

使用方式:解析用 express.urlencoded({ extended: true })、await request.formData()、URLSearchParams 或 FastAPI 的 await request.form()(需 python-multipart)。因无签名,安全依赖 URL 查询串中的长随机 token 并用恒定时间比较,未配置时 fail closed(500);示例函数 verifyUrlToken 使用 crypto.timingSafeEqual 并先做长度校验。环境变量包括必填的 WORDPRESS_COM_WEBHOOK_TOKEN 和可选的 WORDPRESS_COM_SITE。本地调试可用:npx hookdeck-cli listen 3000 wordpress-com --path /webhooks/wordpress-com。

限制与注意:publish_post / publish_page 在首次发布及此后每次编辑已发布内容时都会触发,同一 ID 会重复到达且无投递 ID 头,需按 hook + ID + post_modified_gmt 去重或做 upsert;评论按 comment_ID 去重。文档未描述重试、超时、投递日志或测试按钮,应假定无重试并通过 REST API 对账补充。token 对站点管理员可见且可能出现在代理日志中,泄漏需轮换,配合 HTTPS 使用。不要与 WooCommerce(X-WC-Webhook-Signature,HMAC-SHA256)、WordPress.org 插件、REST API、Jetpack Forms 混淆。