使用WordPress和CloudFunctions集成,将博客功能实现在应用程序内
使用WordPress和CloudFunctions进行协作,将博客功能嵌入应用程序中。
这是在PORT Firebase x PostCoffee #2上发表的演讲内容。
我是中川,正在开发咖啡订阅应用程序PostCofee。这个PostCofee应用程序的后端只使用了Firebase开发。如果你喜欢咖啡,请务必下载体验!
将WordPress与其他服务进行整合的步骤
在这个故事中展示的博客是用WordPress编写的,并且结构是这样的。
-
- 在WordPress上发布和更新文章
-
- 在上述时机,从WordPress端调用通过CloudFunctions准备好的函数,传入所需的参数
-
- 当被调用时,CloudFunctions接收参数并将其保存到FireStore中,并向应用程序发送推送通知
- 应用程序去CloudFireStore获取数据。
在CloudFunctions上进行的任务
首先,我们将实现CloudFunctions。
触发器将使用functions.https。
有关详细信息,请访问使用HTTP请求调用函数。
此外,在Cloud Functions中还将发送Push通知。
这次我们使用了主题分发,以覆盖所有用户。
将消息发送到主题。
exports.wordPressCreated = functions.region('asia-northeast1').https.onRequest(async (req, res) => {
// ここでWordPressからのデータを受け取ってFireStoreへ保存します。
// WordPressからのデータはreq.bodyの中に入っくるので
// 例) const title = req.body.title
// このように取得します。
// FireStoreへの保存が完了したらPush通知を送る
})
关于Push通知的补充说明
如果想要根据文章发送或者不发送推送通知,可以在WordPress中的数据中加入布尔值。需要注意的是,尽管布尔值被称为字符串的 ‘0’ 或 ‘1’ 在接收时会被转换,所以需要谨慎进行判断。
例) WordPressからのparam
{
"title" : "ほげほげ",
"thumbnail" : "https://○○○.png",
"url" : "https://qiita.com/",
"isSnedPush" : "1" // Push通知を送るかどうか
}
// isSendPushが '1' のときにPushを送る
if (req.body.isSendPush === '1') {
// Push通知を送る
}
CloudFunctions的实施就到此为止。
完成实施后,让我们进行部署。
在WordPress上要做的事情
在WordPress侧,我们将钩子绑定到文章的发布和更新事件上,以便调用已实施的Cloud Functions。同时,我们还将在此处发送要保存到FireStore的数据。
点击URL(CloudFunctions)在Firebase控制台中。
功能 → 仪表板 → 触发器
写在上面。
关于调试
最后,最好是在WordPress上发布文章并确认,但如果希望在实施过程中确认,或者无法自行调整WordPress时,可以直接调用CloudFunctions来确认。
我认为有几种方法可以调用已部署的Cloud Functions,但这次我使用了Postman。
只需要一种选择,以下是对原文的汉语翻译:
是否触发了CloudFunctions。
Firebase 控制台的 Functions → 日志
可以通过以下途径进行确认。
总结
本次我们介绍了WordPress和Cloud Functions的协作。不仅仅局限于WordPress,我认为可以通过几乎相同的配置与其他服务进行协作,希望对您有所参考。
如果您对这里有任何更详细的问题或想了解更多的话,请随意留言,我会尽力在可以提供的范围内进行补充。