WordPress技能使用说明
WordPress.com
通过托管的OAuth认证访问WordPress.com REST API。在WordPress.com托管的网站上创建和管理文章、页面及网站内容。
快速开始
# List posts from a site
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/wordpress/rest/v1.1/sites/{site_id}/posts?number=10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
基础URL
https://gateway.maton.ai/wordpress/rest/v1.1/{endpoint}
网关将请求代理至public-api.wordpress.com并自动注入您的OAuth令牌。
注意:WordPress.com使用REST v1.1 API。特定站点的端点遵循以下模式/sites/{站点ID或域名}/{资源}。
认证
所有请求都需要在Authorization头部包含Maton API密钥:
Authorization: Bearer $MATON_API_KEY
环境变量:将您的API密钥设置为MATON_API_KEY:
export MATON_API_KEY="YOUR_API_KEY"
获取您的API密钥
连接管理
在以下地址管理您的WordPress.com OAuth连接:https://ctrl.maton.ai。
列出连接
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=wordpress&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
创建连接
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'wordpress'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
获取连接
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
响应:
{
"connection": {
"connection_id": "fb327990-1a43-4325-9c15-bad771b6a288",
"status": "ACTIVE",
"creation_time": "2026-02-10T07:46:26.908898Z",
"last_updated_time": "2026-02-10T07:49:33.440422Z",
"url": "https://connect.maton.ai/?session_token=...",
"app": "wordpress",
"metadata": {}
}
}
在浏览器中打开返回的URL以完成OAuth授权。
删除连接
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
指定连接
如果您有多个WordPress.com连接,请使用Maton-Connection请求头指定要使用哪一个:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/wordpress/rest/v1.1/sites/{site_id}/posts')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Maton-Connection', 'fb327990-1a43-4325-9c15-bad771b6a288')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
如果省略,网关将使用默认的(最早的)活动连接。
API参考
站点
获取站点信息
GET /wordpress/rest/v1.1/sites/{site_id_or_domain}
响应:
{
"ID": 252505333,
"name": "My Blog",
"description": "Just another WordPress.com site",
"URL": "https://myblog.wordpress.com",
"capabilities": {
"edit_pages": true,
"edit_posts": true,
"edit_others_posts": true,
"delete_posts": true
}
}
站点标识符可以是以下任意一种:
- 数字站点ID(例如,
252505333) - 域名(例如,
myblog.wordpress.com或en.blog.wordpress.com)
文章
列出文章
GET /wordpress/rest/v1.1/sites/{site}/posts
查询参数:
number- 返回的文章数量(默认:20,最大:100)offset- 分页偏移量page- 页码page_handle- 分页游标(来自响应中的meta.next_page)order- 排序顺序:DESC或ASCorder_by- 排序字段:date,modified,title,comment_count,IDstatus- 文章状态:publish,draft,pending,private,future,trash,anytype- 文章类型:post,页面,任意搜索- 搜索词分类- 分类别名标签- 标签别名作者- 作者 ID字段- 要返回的字段列表,以逗号分隔
响应:
{
"found": 150,
"posts": [
{
"ID": 83587,
"site_ID": 3584907,
"author": {
"ID": 257479511,
"login": "username",
"name": "John Doe"
},
"date": "2026-02-09T15:00:00+00:00",
"modified": "2026-02-09T16:30:00+00:00",
"title": "My Post Title",
"excerpt": "<p>Post excerpt...</p>",
"content": "<p>Full post content...</p>",
"slug": "my-post-title",
"status": "publish",
"type": "post",
"categories": {...},
"tags": {...}
}
],
"meta": {
"next_page": "value=2026-02-09T15%3A00%3A00%2B00%3A00&id=83587"
}
}
获取文章
GET /wordpress/rest/v1.1/sites/{site}/posts/{post_id}
响应:
{
"ID": 83587,
"site_ID": 3584907,
"author": {...},
"date": "2026-02-09T15:00:00+00:00",
"title": "My Post Title",
"content": "<p>Full post content...</p>",
"slug": "my-post-title",
"status": "publish",
"type": "post",
"categories": {
"news": {
"ID": 123,
"name": "News",
"slug": "news"
}
},
"tags": {
"featured": {
"ID": 456,
"name": "Featured",
"slug": "featured"
}
}
}
创建文章
POST /wordpress/rest/v1.1/sites/{site}/posts/new
Content-Type: application/json
{
"title": "New Post Title",
"content": "<p>Post content here...</p>",
"status": "draft",
"categories": "news, updates",
"tags": "featured, important"
}
参数:
标题- 文章标题(必填)内容- 文章内容(HTML)摘要- 文章摘要状态-发布,草稿,待定,私密,未来日期- 发布日期 (ISO 8601格式)分类- 以逗号分隔的分类名称或别名标签- 以逗号分隔的标签名称或别名格式- 文章格式:标准,日志,聊天,图库,链接,图像quotestatusvideoaudioslug- URL 别名featured_image- 特色图片附件 IDsticky- 文章是否置顶(布尔值)password- 保护文章的密码Response:更新文章使用与创建文章相同的参数。删除文章
将文章移至回收站。返回被删除的文章,其
{
"ID": 123,
"site_ID": 252505333,
"title": "New Post Title",
"status": "draft",
"date": "2026-02-10T09:50:35+00:00"
}
状态为:"trash"
POST /wordpress/rest/v1.1/sites/{site}/posts/{post_id}
Content-Type: application/json
{
"title": "Updated Title",
"content": "<p>Updated content...</p>"
}
。
页面
POST /wordpress/rest/v1.1/sites/{site}/posts/{post_id}/delete
页面使用与文章相同的端点,但需指定type=page.
Pages
Pages use the same endpoints as posts withtype=page列表页面
创建页面
GET /wordpress/rest/v1.1/sites/{site}/posts?type=page
获取页面下拉列表
POST /wordpress/rest/v1.1/sites/{site}/posts/new?type=page
Content-Type: application/json
{
"title": "About Us",
"content": "<p>About page content...</p>",
"status": "publish"
}
返回用于下拉菜单/菜单的简化页面列表。
GET /wordpress/rest/v1.1/sites/{site}/dropdown-pages/
获取页面模板
返回网站主题可用的页面模板。
GET /wordpress/rest/v1.1/sites/{site}/page-templates
帖子点赞
获取帖子点赞
响应:
GET /wordpress/rest/v1.1/sites/{site}/posts/{post_id}/likes
点赞帖子
{
"found": 99,
"i_like": false,
"can_like": true,
"site_ID": 3584907,
"post_ID": 83587,
"likes": [...]
}
取消点赞帖子
POST /wordpress/rest/v1.1/sites/{site}/posts/{post_id}/likes/new
帖子转发
POST /wordpress/rest/v1.1/sites/{site}/posts/{post_id}/likes/mine/delete
检查转发状态
响应:
GET /wordpress/rest/v1.1/sites/{site}/posts/{post_id}/reblogs/mine
帖子类型
{
"can_reblog": true,
"can_user_reblog": true,
"is_reblogged": false
}
列表帖子类型
响应:
GET /wordpress/rest/v1.1/sites/{site}/post-types
帖子计数
{
"found": 3,
"post_types": {
"post": {
"name": "post",
"label": "Posts",
"labels": {...}
},
"page": {
"name": "page",
"label": "Pages",
"labels": {...}
}
}
}
获取帖子计数
示例:
GET /wordpress/rest/v1.1/sites/{site}/post-counts/{post_type}
/sites/{site}/post-counts/post 或/sites/{site}/post-counts/page响应:
Response:
{
"counts": {
"all": {"count": 150},
"publish": {"count": 120},
"draft": {"count": 25},
"trash": {"count": 5}
}
}
用户
列出网站用户
GET /wordpress/rest/v1.1/sites/{site}/users
响应:
{
"found": 3,
"users": [
{
"ID": 277004271,
"login": "username",
"name": "John Doe",
"email": "john@example.com",
"roles": ["administrator"]
}
]
}
用户设置
获取用户设置
GET /wordpress/rest/v1.1/me/settings
响应:
{
"enable_translator": true,
"surprise_me": false,
"holidaysnow": false,
"user_login": "username"
}
更新用户设置
POST /wordpress/rest/v1.1/me/settings/
Content-Type: application/json
{
"enable_translator": false
}
用户点赞
获取用户点赞的帖子
GET /wordpress/rest/v1.1/me/likes
响应:
{
"found": 10,
"likes": [
{
"ID": 83587,
"site_ID": 3584907,
"title": "Liked Post Title"
}
]
}
嵌入内容
获取网站嵌入内容
GET /wordpress/rest/v1.1/sites/{site}/embeds
返回网站可用的嵌入处理器。
短代码
获取可用短代码
GET /wordpress/rest/v1.1/sites/{site}/shortcodes
返回网站上可用的短代码。
分页
WordPress.com 使用基于游标的分页,参数为page_handle:
import os
import requests
headers = {
'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'
}
# Initial request
response = requests.get(
'https://gateway.maton.ai/wordpress/rest/v1.1/sites/{site}/posts',
headers=headers,
params={'number': 20}
)
result = response.json()
all_posts = result['posts']
# Continue with page_handle
while result.get('meta', {}).get('next_page'):
response = requests.get(
'https://gateway.maton.ai/wordpress/rest/v1.1/sites/{site}/posts',
headers=headers,
params={'number': 20, 'page_handle': result['meta']['next_page']}
)
result = response.json()
all_posts.extend(result['posts'])
print(f"Total posts: {len(all_posts)}")
或者,也可以使用offset进行简单分页:
GET /wordpress/rest/v1.1/sites/{site}/posts?number=20&offset=20
代码示例
JavaScript
const response = await fetch(
'https://gateway.maton.ai/wordpress/rest/v1.1/sites/{site}/posts?number=10',
{
headers: {
'Authorization': `Bearer ${process.env.MATON_API_KEY}`
}
}
);
const data = await response.json();
console.log(`Found ${data.found} posts`);
Python
import os
import requests
response = requests.get(
'https://gateway.maton.ai/wordpress/rest/v1.1/sites/{site}/posts',
headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'},
params={'number': 10, 'status': 'publish'}
)
data = response.json()
print(f"Found {data['found']} posts")
Python (创建文章)
import os
import requests
response = requests.post(
'https://gateway.maton.ai/wordpress/rest/v1.1/sites/{site}/posts/new',
headers={
'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}',
'Content-Type': 'application/json'
},
json={
'title': 'My New Post',
'content': '<p>Hello World!</p>',
'status': 'draft',
'categories': 'news',
'tags': 'hello, first-post'
}
)
post = response.json()
print(f"Created post ID: {post['ID']}")
注意
- WordPress.com API 使用 REST v1.1 (而非 v2)
- 站点标识符可以是数字ID或域名
- 向
/posts/{id}发送 POST 请求来更新文章 (而非使用 PUT/PATCH) - DELETE 操作使用 POST 请求发送到
/posts/{id}/delete(而非使用 HTTP DELETE 方法) - 分类和标签在文章中被引用时会自动创建
- 日期/时间值采用 ISO 8601 格式
- 所有内容均为 HTML 格式
- 重要提示:当将 curl 输出通过管道传递给
jq或其他命令时,像$MATON_API_KEY这样的环境变量在某些 shell 环境中可能无法正确展开
错误处理
| 状态码 | 含义 |
|---|---|
| 400 | 缺少WordPress连接或请求错误 |
| 401 | Maton API密钥无效或缺失 |
| 403 | 权限不足或OAuth范围不足 |
| 404 | 站点或资源未找到 |
| 429 | 请求频率受限 |
| 4xx/5xx | 来自WordPress.com API的透传错误 |
错误响应包含详细信息:
{
"error": "unauthorized",
"message": "User cannot view users for specified site"
}
故障排除:API密钥问题
- 检查
MATON_API_KEY环境变量是否已设置:
echo $MATON_API_KEY
- 通过列出连接来验证API密钥是否有效:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
故障排除:无效的应用名称
- 确保您的URL路径以
wordpress开头。例如:
- 正确:
https://gateway.maton.ai/wordpress/rest/v1.1/sites/{site_id}/posts - 不正确:
https://gateway.maton.ai/rest/v1.1/sites/{site_id}/posts


微信扫一扫,打赏作者吧~