得到的三十分大师

目录

一、判断WP是否开启REST API(3种方法,优先第一种)

注意:WP 4.7+ 原生自带REST API,默认开启;不是插件,不需要安装。大多访问失败是伪静态/安全插件拦截,不是没开通

方法1:浏览器直接访问(最简单)

地址:https://你的域名/wp-json/wp/v2
✅ 成功:页面输出一大段JSON,代表API正常
❌ 失败:404/403/无法访问 → 被拦截,不是API没装

测试文章列表:
https://你的域名/wp-json/wp/v2/posts
能返回文章json=正常

方法2:WP后台 网站健康检查

  1. 后台 → 工具 → 网站健康
  2. 查看【REST API】项目
  • 提示“REST API可用”=正常
  • 提示错误:就是接口访问异常(伪静态、防火墙、安全插件拦截)

方法3:curl命令测试(服务器/本地终端)

curl https://你的域名/wp-json/wp/v2

返回JSON即为正常


二、常见拦截原因 & 修复

  1. 伪静态没配置(最高发,Nginx/Apache)
  • Apache:WP后台设置→固定链接,随便选一个非朴素结构,自动生成.htaccess
  • Nginx:在站点配置增加WP伪静态规则,否则/wp-json会404
    location / {
      try_files $uri $uri/ /index.php?$args;
    }
  1. 安全插件:Wordfence、iThemes Security、防火墙、CDN(Cloudflare)拦截/wp-json路径 → 在插件里放行wp-json
  2. wp-config 手动禁用代码:如果存在下面这行,删掉
    define( 'REST_API_ENABLED', false );

三、REST API 基础操作(v2版本)

🔓 公开请求(GET,无需登录,读文章/分类)

接口作用
/wp-json/wp/v2/posts获取文章列表
/wp-json/wp/v2/posts/{id}获取单篇文章
/wp-json/wp/v2/categories分类列表
/wp-json/wp/v2/media媒体库

示例curl拉文章:

curl [https://xxx.com/wp-json/wp/v2/posts](https://xxx.com/wp-json/wp/v2/posts)

🔐 带认证请求(POST/ PUT/ DELETE,新建、修改、删除文章)

WP5.6+ 自带【应用密码 Application Passwords】,推荐用这个认证,不要用账号密码直接请求

生成应用密码

  1. WP后台 → 用户 → 个人资料
  2. 往下滑找到 应用密码
  3. 填写名称(例如python爬虫),点添加,复制生成密码(只显示一次!)

认证方式:Basic Auth

账号:你的WP用户名
密码:刚刚生成的应用密码

curl示例:新建一篇文章

curl --user "admin:xxxx xxxx xxxx xxxx" \
--header "Content-Type: application/json" \
--request POST \
--data '{
  "title": "API创建的文章",
  "content": "正文内容",
  "status": "publish"
}' \
[https://xxx.com/wp-json/wp/v2/posts](https://xxx.com/wp-json/wp/v2/posts)

Python requests 示例(你写Python爬虫会用到)

import requests
user = "admin"
app_pwd = "xxxx xxxx xxxx xxxx"
url = "[https://xxx.com/wp-json/wp/v2/posts](https://xxx.com/wp-json/wp/v2/posts)"
data = {
    "title":"API文章",
    "content":"内容",
    "status":"draft"
}
resp = requests.post(url, auth=(user, app_pwd), json=data)
print(resp.json())

四、常用排错清单

  1. 访问/wp-json/wp/v2返回404 → 伪静态问题
  2. 返回401 Unauthorized → 账号/应用密码错误
  3. 返回403 Forbidden → 安全插件、服务器防火墙、CDN拦截wp-json路径
  4. 能GET但POST失败:权限不足,用户角色至少编辑者

五、关闭REST API(如果你需要)

不推荐,后台区块编辑器、很多插件依赖它。
可以用插件 Disable REST API,或者在主题functions.php添加代码限制。

你需要的话我可以直接给:Nginx完整WP伪静态配置,或者一段Python代码,一键测试WP REST API连通性。

评论 0

还没有评论,来抢沙发吧。