网淘吧来吧,欢迎您!

WordPress技能使用说明

2026-03-28 新闻来源:网淘吧 围观:21
电脑广告
手机广告

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密钥

  1. 登录或在maton.ai
  2. 创建账户前往
  3. 复制您的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.comen.blog.wordpress.com

文章

列出文章

GET /wordpress/rest/v1.1/sites/{site}/posts

查询参数:

  • number- 返回的文章数量(默认:20,最大:100)
  • offset- 分页偏移量
  • page- 页码
  • page_handle- 分页游标(来自响应中的meta.next_page
  • order- 排序顺序:DESCASC
  • order_by- 排序字段:date,modified,title,comment_count,ID
  • status- 文章状态:publish,draft,pending,private,future,trash,any
  • type- 文章类型: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- 特色图片附件 ID
  • sticky- 文章是否置顶(布尔值)
  • 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连接或请求错误
401Maton API密钥无效或缺失
403权限不足或OAuth范围不足
404站点或资源未找到
429请求频率受限
4xx/5xx来自WordPress.com API的透传错误

错误响应包含详细信息:

{
  "error": "unauthorized",
  "message": "User cannot view users for specified site"
}

故障排除:API密钥问题

  1. 检查MATON_API_KEY环境变量是否已设置:
echo $MATON_API_KEY
  1. 通过列出连接来验证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

故障排除:无效的应用名称

  1. 确保您的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

资源

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏
文章底部电脑广告
手机广告位-内容正文底部

相关文章

您是本站第326310名访客 今日有221篇新文章/评论