Z-Blog PHP API 自动发文完全指南:从零到成功发布
![]()
前言
本文记录一次完整的 Z-BlogPHP API 自动发文实战过程,从接口探测、登录鉴权到成功发布,包含所有踩过的坑和解决方案,希望能帮助同样需要"自动发文"的朋友少走弯路。
一、前置条件:确认 API 地址
Z-BlogPHP 1.7 及以上版本内置了原生 JSON API,入口统一为:
https://你的域名/zb_system/api.php
这个地址可以在后台首页看到。注意:该接口只接受 POST 请求,直接用浏览器 GET 访问会返回 404,这是正常现象,不要误以为接口不存在。
二、登录获取 token
所有"增删改"类操作都需要鉴权。第一步是登录,换取访问令牌:
POST /zb_system/api.php?mod=member&act=login
请求体字段:
username:后台登录用户名password:密码的MD5值(推荐)savedate:有效期天数(如 30 表示 30 天)
登录成功后返回:
{"code":200,"data":{"user":{...},"token":"xxxx","expire_time":1788974849}}
保存好 token,它就是后续所有请求的通行证。
三、携带 token 鉴权
三种方式都可以,任选其一:
- HTTP 请求头:
Authorization: Bearer <token>(推荐) - POST 字段:
token=<token> - GET 参数:
?token=<token>
四、发布文章(核心操作)
发布文章使用 post 模块:
POST /zb_system/api.php?mod=post&act=post
关键字段(来源:官方文档 datainfo 定义):
ID:0 表示新建,非 0 且存在则修改Title:标题Content:正文(HTML 格式)Intro:摘要(可留空自动生成)CateID:分类 IDStatus:0=发布,1=草稿Type:0=文章
完整 curl 示例:
curl -X POST "https://你的域名/zb_system/api.php?mod=post&act=post" -H "Authorization: Bearer <token>" -H "Content-Type: application/x-www-form-urlencoded" --data-urlencode "ID=0" --data-urlencode "Title=标题" --data-urlencode "Content=<p>正文</p>" --data-urlencode "CateID=1" --data-urlencode "Status=0"
五、踩坑记录
坑 1:模块名是 post,不是 article
文章模块的源码文件是 zb_system/api/post.php,所以模块名必须是 mod=post。用 mod=article 会直接 404。
坑 2:xiurr 插件拦截保存
本站装有 xiurr_editormd_plus(Editor.md_PLUS 编辑器)插件,它会在保存文章时读取编辑器专属字段(如 xiurr-render-config),API 调用不带这些字段就会报 Undefined array key 错误,甚至把文章内容清空。解决:后台禁用该插件后,API 发文立即恢复正常。
坑 3:返回"操作成功"但文章没落库
插件拦截时会出现返回成功但 post.ID=0 的假象。验证方法:发布后调用 ?mod=post&act=list&manage=1 查看最新文章,确认新文章 ID 确实存在。
六、其他常用操作
- 获取文章列表:
mod=post&act=list(加manage=1可看草稿) - 获取单篇:
mod=post&act=get&id=文章ID - 删除文章:
mod=post&act=delete&id=文章ID - 分类列表:
mod=category&act=list - 管理插件:
mod=app&act=enable_plugin / disable_plugin,参数id=插件ID
结语
Z-BlogPHP 的原生 API 功能完整、调用简单,配合 token 鉴权可以方便地实现自动发文、批量更新、内容同步等需求。遇到问题时,官方文档和源码(GitHub 上的 zblogcn/zblogphp)是最好的参考。祝大家发文顺利!
本站所有文章内容在未注明的情况下均为原创,未经允许谢绝转载。