You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用WordPress REST API创建自定义类型文章失败,求解决方法

解决WordPress REST API创建自定义文章类型失败的问题

我来帮你捋捋这个问题——之前我也碰到过类似的情况,核心问题基本都出在自定义文章类型(CPT)的REST支持配置,或者端点使用错误上。按下面的步骤逐一排查,应该能解决:

1. 确保自定义文章类型开启了REST API支持

这是最容易忽略的关键点!你注册自定义文章类型的时候,必须在register_post_type函数里添加show_in_rest参数并设为true,否则WordPress不会把它暴露到REST API里。

举个注册示例:

register_post_type( 'my_custom_post', array(
    'public' => true,
    'label'  => '我的自定义文章',
    'show_in_rest' => true, // 必须开启这一项!
    'rest_base' => 'custom-posts', // 可选,自定义REST端点的基础路径,默认是CPT的slug
    // 其他必要参数(比如支持的功能、菜单位置等)...
) );

修改完代码后,记得去WordPress后台的「设置→固定链接」页面,随便选一个固定链接格式然后保存,刷新一下重写规则,这个步骤很重要,不然新的REST端点可能不会生效。

2. 使用正确的REST API端点

你之前一直用wp-json/wp/v2/posts这个端点,这本来就是默认文章类型(post)的创建接口,所以不管你传什么数据,都会生成普通文章。

正确的端点应该是wp-json/wp/v2/[你的CPT slug],比如你的自定义文章类型slug是book,那创建接口就是http://example.com/wp-json/wp/v2/book。

不确定slug的话,可以先发送一个GET请求到http://example.com/wp-json/wp/v2/,看返回的路由列表里有没有你的CPT对应的端点,确认存在再发POST请求。

3. 检查POST请求的参数和格式

在Postman里要注意这几点:

  • 「Body」选项卡选择「raw」,格式选「JSON」,确保Content-Type请求头是application/json
  • 请求体里至少包含必填字段(比如title、content、status),不需要额外传post_type参数(因为端点已经指定了类型)
    示例请求体:
{
    "title": "测试自定义文章",
    "content": "这是一篇通过REST API创建的自定义文章",
    "status": "publish"
}

4. 确认认证和权限没问题

创建文章需要编辑权限,所以你的请求必须通过WordPress的认证:

  • 如果是WordPress 5.6及以上版本,推荐用「应用密码」:在后台「用户→个人资料」里生成应用密码,然后在Postman的「Authorization」选项卡选「Basic Auth」,用户名是你的WP登录名,密码是生成的应用密码
  • 检查当前用户是否有创建该自定义文章类型的权限,比如注册CPT时如果设置了自定义权限,要确保用户拥有对应的权限(比如edit_my_custom_post)

5. 调试排查错误

如果还是不行,打开WP的调试模式看看日志:
在wp-config.php里添加:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);

然后重新发送请求,去wp-content/debug.log里找相关错误提示,比如端点不存在、权限不足、参数错误等,这些日志能帮你快速定位问题。

内容的提问来源于stack exchange,提问作者linktoahref

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:23:13