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

如何从Heroku上的Node.js应用自动向WordPress上传JSON文件?

实现Heroku Node.js应用自动推送JSON文件到WordPress的方案

完全可以用WordPress REST API实现这个自动化流程,下面是具体的步骤和细节:

一、准备工作:启用并配置WordPress REST API

WordPress默认已经启用REST API,但要进行POST操作(创建/更新内容)必须做身份验证,推荐用应用密码(WordPress 5.6及以上版本支持),操作如下:

  • 登录WordPress后台,进入「用户」→「个人资料」
  • 找到「应用密码」板块,输入一个名称(比如Heroku-Data-Push),点击「添加应用密码」
  • 保存生成的16位密码(只会显示一次,别丢了)

二、Node.js端实现推送逻辑

在你的Heroku Node.js应用里,添加推送JSON文件的代码,核心步骤如下:

1. 读取本地JSON文件

用Node.js内置的fs模块读取生成的JSON文件:

const fs = require('fs');
const path = require('path');

// 读取JSON文件
const jsonFilePath = path.join(__dirname, 'your-generated-file.json');
const jsonContent = fs.readFileSync(jsonFilePath, 'utf8');
const data = JSON.parse(jsonContent);

2. 构造REST API请求

用axios或者原生fetch发送POST请求到WordPress REST API,这里以axios为例:
首先安装axios:

npm install axios

然后编写请求代码:

const axios = require('axios');

// 从Heroku环境变量获取敏感信息(别硬编码!)
const WP_USER = process.env.WP_USER;
const WP_APP_PASSWORD = process.env.WP_APP_PASSWORD;
const WP_API_URL = 'https://your-wp-domain.com/wp-json/wp/v2/posts'; // 以创建帖子为例,也可以用自定义端点

// 构造请求头(Basic Auth)
const authHeader = `Basic ${Buffer.from(`${WP_USER}:${WP_APP_PASSWORD}`).toString('base64')}`;

// 构造请求体:把JSON内容作为帖子内容,也可以根据需求自定义字段
const postData = {
  title: `数据推送 ${new Date().toISOString()}`,
  content: JSON.stringify(data, null, 2), // 格式化JSON方便阅读
  status: 'publish' // 直接发布,或者设为draft草稿
};

// 发送请求
async function pushToWordPress() {
  try {
    const response = await axios.post(WP_API_URL, postData, {
      headers: {
        'Authorization': authHeader,
        'Content-Type': 'application/json'
      }
    });
    console.log('推送成功,帖子ID:', response.data.id);
  } catch (error) {
    console.error('推送失败:', error.response?.data || error.message);
  }
}

// 在生成JSON文件后调用这个函数
pushToWordPress();

3. 配置Heroku环境变量

在Heroku后台的应用「设置」→「配置变量」里添加:

  • WP_USER:你的WordPress用户名
  • WP_APP_PASSWORD:之前生成的应用密码
  • WP_API_URL:你的WordPress REST API端点(比如帖子端点是https://your-domain.com/wp-json/wp/v2/posts)

三、自动化触发方式

  • 即时触发:在Node.js应用生成JSON文件的代码执行完成后,直接调用pushToWordPress()函数,生成完毕立刻推送。
  • 定时触发:如果是定时生成JSON文件,可以用node-schedule包实现定时任务,或者用Heroku的内置「Scheduler」(免费额度够用),定时运行你的推送脚本。

四、注意事项

  • 如果需要推送JSON文件作为附件(而不是帖子内容),可以调用媒体端点/wp-json/wp/v2/media,把JSON文件作为表单数据上传,请求头设为Content-Type: multipart/form-data。
  • 检查WordPress的PHP配置:如果JSON文件过大,需要调整upload_max_filesize和post_max_size参数(SiteGround和WP Engine都支持在后台或通过客服调整)。
  • 测试阶段先在本地用curl验证API可用性:
curl -X POST -u "你的用户名:应用密码" https://your-wp-domain.com/wp-json/wp/v2/posts \
  -H "Content-Type: application/json" \
  -d '{"title":"测试推送","content":"{\"test\":\"data\"}","status":"publish"}'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:50:28