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

如何用Postman创建WordPress文章?遇rest_cannot_create错误求助

Hey,我碰到过好几次这个WP REST API的权限坑,咱们一步步来搞定它!你遇到的rest_cannot_create错误(401状态码),核心问题基本都是认证方式不对或者权限被意外限制,下面是具体排查和解决方法:

一、先搞定认证——这是最常见的问题

WordPress REST API默认不支持直接在请求参数里传管理员账号密码,哪怕你是管理员也没用,得用正确的认证方式:

1. 用「应用密码」(推荐,零插件)

WordPress 5.6以后自带了应用密码功能,专门给API调用用的:

  • 登录你的WP后台,进入「用户」→「个人资料」
  • 往下翻找「应用密码」模块(如果没看到,就在wp-config.php里加一行代码:define( 'WP_REST_APPLICATION_PASSWORDS_ENABLED', true );,刷新页面就出来了)
  • 点击「添加新应用密码」,随便起个名字比如「Postman调用」,生成后会得到一串16位的密码(记得存好,刷新页面就看不到了)
  • 回到Postman,在请求的「Authorization」标签里,类型选「Basic Auth」,用户名填你的管理员账号,密码填刚才生成的应用密码,再重新发送创建文章的请求试试

2. 用JWT认证(适合需要频繁调用的场景)

如果需要更灵活的认证,就装个JWT Authentication for WP REST API插件:

  • 安装激活后,打开wp-config.php,添加两行配置:
    define('JWT_AUTH_SECRET_KEY', '随便搞一串随机字符串当密钥');
    define('JWT_AUTH_CORS_ENABLE', true);
    
  • 先在Postman里发一个POST请求到http://localhost/wordpress/wp-json/jwt-auth/v1/token,参数填username和你的管理员密码,会返回一个token
  • 然后在创建文章的请求里,添加一个Header:Authorization: Bearer 刚才拿到的token,再发送请求
二、排查权限是否被意外限制

如果认证搞定了还是报错,就得检查权限问题:

  • 确认你的用户角色确实是「管理员」:进WP后台的「用户」页面,看看自己的角色有没有被改成编辑者或者其他
  • 暂时禁用安全类插件(比如Wordfence、iThemes Security):这类插件经常会限制REST API的访问,禁用后再测试
  • 检查主题的functions.php:有没有自定义代码修改了REST API的权限,比如用rest_posts_controller_create_item_permissions_check过滤器改掉了默认权限
三、先确认REST API本身正常

先在Postman里发个GET请求到http://localhost/wordpress/wp-json/wp/v2/posts,看看能不能拿到已有的文章列表。如果GET都报错,说明REST API被禁用了:

  • 检查wp-config.php里有没有define('DISABLE_WP_CRON', true);或者其他禁用API的代码
  • 排查插件是否有禁用REST API的功能,比如某些优化插件
替代方案

要是上面的方法都不行,试试这两个替代路子:

1. 用WP-CLI命令创建文章

打开终端,切换到你的WordPress根目录,直接跑命令:

wp post create --post_title="我的测试文章" --post_content="文章内容随便写" --post_status=publish --user=你的管理员账号

这个方法绕开了REST API,直接调用WP核心函数,权限绝对没问题

2. 自定义一个简单的API端点

在主题的functions.php里加一段代码,自己搞个专属的创建文章接口:

add_action('rest_api_init', function () {
    register_rest_route('custom/v1', '/create-post', array(
        'methods' => 'POST',
        'callback' => 'custom_create_my_post',
        'permission_callback' => function () {
            // 只允许能发布文章的用户调用
            return current_user_can('publish_posts');
        }
    ));
});

function custom_create_my_post($request) {
    $title = $request->get_param('title');
    $content = $request->get_param('content');
    
    // 创建文章
    $post_id = wp_insert_post(array(
        'post_title' => $title,
        'post_content' => $content,
        'post_status' => 'publish'
    ));
    
    return rest_ensure_response(array('post_id' => $post_id, 'message' => '文章创建成功'));
}

然后在Postman里POST到http://localhost/wordpress/wp-json/custom/v1/create-post,用之前的应用密码或JWT认证,参数传title和content就行


内容的提问来源于stack exchange,提问作者Ajith Kumar P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 16:30:33