Wopdpress AI Blogger

Polar Sponsor
爱发电 赞助
.NET 9.0

通过 REST API 创建、编辑和发布 WordPress 文章,全面支持 Gutenberg 区块。当 Codex 需要自动化 WordPress 内容发布、生成…

WordPress API with Gutenberg.

功能概述

WordPress API with Gutenberg.是一项面向实际任务的技能,主要用于Overview. 此技能为与WordPress REST API互动提供了全面的指导,以使用Gutenberg块编辑器格式创建和管理帖子. 它覆盖了。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。

核心要点

  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

使用与执行

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

WordPress API 与 Gutenberg

概述

本技能提供全面指导,帮助您通过 WordPress REST API 创建和管理采用 Gutenberg 区块编辑器格式的文章。内容涵盖身份验证、区块序列化、媒体上传及发布工作流。

快速开始

使用 API 前,请确保已具备以下条件:

  1. WordPress 站点:已启用 REST API(默认启用)

  2. 身份验证凭据:

    • 应用密码(Application Password,适用于 WordPress 5.6+):在 /wp-admin/admin.php?page=application-passwords 页面生成
    • 已安装 JWT Authentication 插件(替代方案)
    • 用户名/密码用于 Basic Auth(不建议在生产环境中使用)
  3. 基础 URL:https://your-site.com/wp-json/wp/v2

身份验证

应用密码(推荐)

# 设置环境变量
export WP_URL="https://your-site.com"
export WP_USERNAME="admin"
export WP_APPLICATION_PASSWORD="xxxx xxxx xxxx xxxx xxxx xxxx"
import requests
import os

wp_url = os.environ.get('WP_URL')
username = os.environ.get('WP_USERNAME')
password = os.environ.get('WP_APPLICATION_PASSWORD')

auth = (username, password)

JWT 身份验证

若使用 JWT 插件,请先获取令牌:

import requests

wp_url = "https://your-site.com"
username = "admin"
password = "password"

# 获取令牌
resp = requests.post(f"{wp_url}/wp-json/jwt-auth/v1/token", 
                     json={"username": username, "password": password})
token = resp.json()['token']

headers = {"Authorization": f"Bearer {token}"}

使用 Gutenberg 区块创建文章

WordPress REST API 要求文章以 Gutenberg 序列化区块格式提交。content 字段应包含区块注释及 HTML 内容。

基础区块结构

def create_gutenberg_post(title, content_blocks):
    """
    使用 Gutenberg 区块创建文章。
    
    参数:
        title: 文章标题
        content_blocks: 区块字典列表,每个字典包含 'blockName' 和 'attrs'
    
    返回:
        用于 POST 请求的 JSON 数据
    """
    # 将区块序列化为 Gutenberg 格式
    block_html = []
    for block in content_blocks:
        block_name = block.get('blockName', 'core/paragraph')
        attrs = block.get('attrs', {})
        inner_html = block.get('innerHTML', '')
        
        # 创建区块注释
        attrs_json = json.dumps(attrs) if attrs else ''
        block_comment = f''
        block_html.append(f'{block_comment}{inner_html}')
    
    content = '\n\n'.join(block_html)
    
    return {
        "title": title,
        "content": content,
        "status": "draft",  # 或 "publish"
        "format": "standard"
    }

常用区块示例

详见 references/common_blocks.md 中的详细示例,包括:

  • 带格式化的段落区块
  • 标题区块(h2–h4)
  • 带图注与对齐方式的图像区块
  • 列表区块(有序/无序)
  • 引用区块
  • 代码区块
  • 自定义 HTML 区块
  • 列布局与布局区块

完整工作流

步骤 1:准备身份验证

将凭据设置为环境变量或配置文件中。

步骤 2:构建文章数据

定义标题、内容区块、分类、标签及特色图像。

步骤 3:上传媒体(如需)

def upload_image(image_path, post_id=None):
    """将图像上传至 WordPress 媒体库。"""
    with open(image_path, 'rb') as f:
        files = {'file': f}
        data = {}
        if post_id:
            data['post'] = post_id
        
        response = requests.post(f"{wp_url}/wp-json/wp/v2/media",
                                 files=files, data=data, auth=auth)
        return response.json()

步骤 4:创建文章

def create_post(post_data):
    """创建新的 WordPress 文章。"""
    response = requests.post(f"{wp_url}/wp-json/wp/v2/posts",
                             json=post_data, auth=auth)
    return response.json()

步骤 5:更新状态

将草稿状态更改为已发布:

def publish_post(post_id):
    """发布一篇草稿文章。"""
    response = requests.post(f"{wp_url}/wp-json/wp/v2/posts/{post_id}",
                             json={"status": "publish"}, auth=auth)
    return response.json()

高级功能

分类与标签

# 获取或创建分类
def ensure_category(name, slug=None):
    categories = requests.get(f"{wp_url}/wp-json/wp/v2/categories",
                             params={"search": name}, auth=auth).json()
    if categories:
        return categories[0]['id']
    else:
        new_cat = requests.post(f"{wp_url}/wp-json/wp/v2/categories",
                               json={"name": name, "slug": slug or name.lower()},
                               auth=auth).json()
        return new_cat['id']

特色图像

# 先上传图像,再设为特色图像
image_data = upload_image("path/to/image.jpg")
post_data["featured_media"] = image_data['id']

自定义字段(ACF)

若使用 Advanced Custom Fields 插件:

post_data["meta"] = {
    "your_field_name": "field_value"
}

错误处理

请始终检查响应结果:

response = requests.post(...)
if response.status_code in [200, 201]:
    print("成功!")
else:
    print(f"错误 {response.status_code}: {response.text}")

常见问题:

  • 401:身份验证失败
  • 403:用户权限不足
  • 404:端点未找到(请核对 WordPress 版本)
  • 500:服务器错误(请检查 PHP 错误日志)

脚本

scripts/ 目录包含以下辅助工具:

  • wp_publish.py:完整的发布流程脚本
  • block_generator.py:从 Markdown 生成 Gutenberg 区块 HTML
  • media_uploader.py:批量上传图像

参考资料

  • common_blocks.md:详细的区块示例
  • api_reference.md:完整的 WordPress REST API 参考文档
  • troubleshooting.md:常见问题与解决方案

资源文件

  • templates/article_template.json:典型文章结构的 JSON 模板
  • block_samples/:各类内容类型的示例区块 HTML

请求示例

# 使用 curl 配合 Application Password 发送请求
curl -X POST https://your-site.com/wp-json/wp/v2/posts 
  -u "admin:xxxx xxxx xxxx xxxx xxxx xxxx" 
  -H "Content-Type: application/json" 
  -d '{
    "title": "我的新文章",
    "content": "

Hello World!

", "status": "draft" }'

相关专题

更多
LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

0

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

0

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

0

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

0

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

0

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

0

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

0

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

0

15

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

2026.09.22

0

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习