本地WordPress作无头CMS,部署Next/Gatsby至Netlify的方案咨询
解决方案:本地WordPress作为无头CMS,部署静态站点到Netlify(无需Netlify连接本地WP)
不管是Gatsby还是Next.js,都能实现你的需求——本地完成全量构建,把静态产物部署到Netlify,完全切断Netlify与本地WordPress的连接,以下是具体实现方式:
Gatsby 实现方式
Gatsby本身是静态站点生成器(SSG),核心逻辑就是在构建阶段拉取所有数据源内容,打包成独立的静态文件。
- 本地配置
gatsby-source-wordpress插件,连接你的本地WordPress站点,确保能正常拉取内容。 - 执行
gatsby build命令,构建完成后,项目根目录会生成public文件夹,里面包含了所有静态HTML、CSS、JS和资源文件。 - 直接将
public文件夹上传到Netlify:可以用Netlify控制台的拖拽上传功能,或者把public内的内容推送到Git仓库,让Netlify关联该仓库自动部署。 - 部署完成后,Netlify上的站点是纯静态的,不会再发起任何请求到你的本地WordPress。
Next.js 实现方式
Next.js支持SSG(静态站点生成)模式,同样可以在本地完成内容拉取和构建,再部署静态产物。有两种方案可选:
方案1:构建时直接拉取本地WP内容
- 在页面组件中使用
getStaticProps(或getStaticPaths用于动态路由),在本地构建阶段请求本地WordPress的REST API,获取所需内容并生成静态页面。 - 执行
next build完成构建,再运行next export命令,将静态页面导出到out文件夹。 - 将
out文件夹上传到Netlify,或推送到Git仓库让Netlify部署。
方案2:先导出WP内容为JSON,再用Next.js读取
- 编写简单的Node.js脚本,调用本地WordPress的REST API,将文章、页面等需要的内容保存为JSON文件(比如放到项目的
data目录下)。 - 在Next.js页面的
getStaticProps中,直接读取本地的JSON文件,以此生成页面。 - 执行
next build && next export生成out文件夹,上传到Netlify即可。
注意事项
- 后续更新内容时,需要在本地重新执行构建流程,再将新的静态产物上传到Netlify。
- 确保本地构建时,所有需要展示的内容都已被拉取并打包到静态文件中,避免出现缺失内容的情况。
内容的提问来源于stack exchange,提问作者Mr Magoo
相关产品推荐
相关产品推荐

