WordPress REST API:无需插件如何实现认证以上传媒体文件?
解决WordPress 4.9.2远程上传媒体文件的REST API配置方案
嘿,结合你多年用WooCommerce API的经验,我来拆解下你遇到的WP REST API媒体上传问题,针对WP 4.9.2这个特殊版本给你明确的步骤:
一、先搞定REST API的基础启用
你说的没错,WP 4.9.2的REST API确实不在核心包里,所以第一步必须安装官方的WP REST API插件(2.x版本)——这个是WP团队维护的,完美适配4.9.2,安装启用后就能正常访问/wp-json/wp/v2/media这类媒体端点了。
二、安全认证方案:替代基础认证的靠谱选择
你提到不想用基础认证,这个非常正确,生产环境绝对不能碰。针对4.9.2,有两个成熟的认证方案可选:
- OAuth 1.0a认证(官方推荐):搭配
OAuth1插件(和WP REST API配套的官方插件)就行。步骤很简单:- 插件启用后,去WP后台的「用户」->「应用程序」页面创建一个新客户端,拿到消费者密钥和消费者秘密。
- 后续的cURL请求要基于这两个密钥生成签名,这样请求就是安全的,不会像基础认证那样明文传输密码。
- JWT认证(更简洁):如果觉得OAuth的签名流程太繁琐,可以用
JWT Authentication for WP REST API插件。不过要先在wp-config.php里加两行配置:
配置好后,先发送POST请求到define('JWT_AUTH_SECRET_KEY', '随便生成一个长的随机字符串,比如用在线密钥生成器搞一个'); define('JWT_AUTH_CORS_ENABLE', true);/wp-json/jwt-auth/v1/token获取token,之后所有请求的Header里带上Authorization: Bearer 你的token就可以了。
三、远程上传媒体的cURL实操示例
不管用哪种认证,上传媒体的核心都是调用/wp-json/wp/v2/media端点,用multipart/form-data格式传文件。这里给你一个JWT认证的cURL示例:
curl -X POST \ https://你的网站域名/wp-json/wp/v2/media \ -H 'Authorization: Bearer 你拿到的JWT Token' \ -H 'Content-Disposition: attachment; filename="你的产品图.jpg"' \ -F 'file=@/本地电脑上的图片路径/你的产品图.jpg'
请求成功后,会返回媒体文件的ID、URL等信息,你直接用这个ID就能给WooCommerce产品关联图片了——和你之前用WooCommerce API关联产品数据的逻辑类似。
四、关于插件的总结
你不需要一堆乱七八糟的插件,只需要两个:
- 必装:
WP REST API(2.x版本)——给4.9.2补上REST API核心功能。 - 二选一:
OAuth1或JWT Authentication for WP REST API——解决安全认证问题。
最后提个小建议:WP 4.9.2确实有点年头了,安全性和兼容性都不如新版本,如果业务允许,尽量升级到最新WP版本,这样REST API是核心自带的,认证方案也更丰富完善。
内容的提问来源于stack exchange,提问作者user982124
相关产品推荐
相关产品推荐

