Wordpress,相信很多很多人都用過,是一款大名鼎鼎的內容管理系統(CMS),因其社區的強大,插件的豐富,用它來建網站和博客真的是非常方便好用。它擁有功能強大的管理后臺,使得對目錄、文章以及標簽的創建和管理,都 ...
Wordpress,相信很多很多人都用過,是一款大名鼎鼎的內容管理系統(CMS),因其社區的強大,插件的豐富,用它來建網站和博客真的是非常方便好用。它擁有功能強大的管理后臺,使得對目錄、文章以及標簽的創建和管理,都變得輕松簡單。
我們在設計和開發我們的微信小程序的時候,可能會遇到需要創建和管理一系列文章類型的內容,比如一個法律手冊小程序,或是一個菜譜小程序。這種時候,我們有兩種選擇:
自己開發一個固然不錯,可以根據自己的實際需要,來靈活的進行功能的定制。但是,要開發好一個這樣的功能,還是需要一定的工作量的。快速開發出一個產品并投入市場,去驗證自己的產品設想是否正確,是一個非常重要的事情。我們要適當的采用拿來主義,爭取節約開發產品的周期。從這一點出發,Wordpress就為我們在內容管理這類需求上面,提供了一個很好很現成的工具。
好了,閑話不多說,我們來看一下怎么讓Wordpress成為我們的微信小程序的內容發動機。
在服務器端,我們分為主管業務的后端程序和主管文章內容的Wordpress程序,它們都通過Nginx或Apache進行代理,向外暴露服務接口(或者你不想讓外面直接訪問你的wordpress的話,wordpress可以省去代理,藏在服務器內部,僅提供來自主業務后端程序的訪問)。
然后小程序客戶端方面,就可以通過Nginx暴露出來的接口,訪問到主業務提供的服務和wordpress的服務。
Wordpress安裝的教程網上太多了,我就不詳細介紹了,自行搜索吧。安裝完成后,你就可以登錄它的管理后臺,進行文章和目錄之類的撰寫管理了。
下一步,我們要讓外部程序可以更方便的調用Wordpress的功能,讓我們可以通過REST API來操作和獲取Wordpress中的數據。Wordpress可以通過安裝插件來提供這樣的功能,而且類似功能的插件不止一個。我在這里,使用了一個名為Wordpress Rest API的插件,這個插件提供的功能比較全面一些,而且在最新版本的Wordpress中,它的功能已經被官方作為基礎功能集成進了Wordpress中,所以比較推薦使用。
安裝并在插件管理頁面啟用這個插件以后(怎么安裝和啟用我不贅述了,簡單的令人發指,自行搞定吧),我們就擁有了通過REST API操作Wordpresss的能力。
比如通過發起GET請求URL地址:http://your-domain/wp-json/wp/v2/posts,我們就可以獲取到JSON格式的Wordpress中的文章列表。當然,也可以通過POST請求,DELETE請求等,執行創建和刪除文章的操作。
你可以點擊這個鏈接,看一下輸出的示例數據。
更多功能呢,可以查看插件使用手冊
了解了這一點,我們就可以對Wordpress中的內容進行進一步的開發利用了。
至此,小程序就可以直接調用暴露出來的Wordpress REST API了,例如:
wx.request({
url: 'https://your-domain/wp-json/wp/v2/posts',
header: {
'content-type': 'application/json'
},
success: function(res) {
console.log(res.data)
}
})
但是,為了保證入口的統一性,以及有可能對從Wordpress中的數據需要進行二次加工的便利性,我們推薦從主業務后端程序中發起對Wordpress的REST API調用。
比如我要做一個從Wordpress中搜索我的文章的功能。我會從我的Node.js寫的后端程序中發起對Wordpress REST API的調用,代碼大致像這樣的(其他后臺語言可以做個參考):
post.service.js
const request = require('request')
const errors = require('../consts/errors')
const WP_JSON_API = 'https://xxxxxx/wp-json/wp/v2'
function search(keyword) {
return new Promise((resolve, reject) => {
// 調用Wordpress:
// https://xxxxxx/wp-json/wp/v2?per_page=10&search=xxxx
request.get(`${WP_JSON_API}/posts`, {
json: true,
qs: {
per_page: 10,
search: keyword
}
}, (err, resp, result) => {
if (err) {
reject(errors.KW_SEARCH_POST_FAIL)
} else {
// result就是從wordpress中獲取到的JSON數據了
// 你可以在這里對數據再做一些額外的加工,比如去掉數據我們不需要的字段等等...
resolve(result)
}
})
})
}
post.route.js
const express = require('express')
const router = express.Router()
const resUtil = require('../lib/util/response')
const postService = require('../../services/post')
// 這是實際給小程序調用的API
// https://xxxxx/api/posts/search?keyword=xxxx
router.get('/api/posts/search', async (req, res) => {
try {
const keyword = req.query.keyword
const posts = await postService.search(keyword)
resUtil.success(res, posts)
} catch (e) {
resUtil.error(res, e)
}
})
然后,微信小程序客戶端程序代碼就可以調用我們主業務后端代碼中提供的搜索文章的API了:
wx.request({
url: 'https://your-domain/api/posts/search',
data: {
keyword: '這里是搜索關鍵字'
},
header: {
'content-type': 'application/json'
},
success: function(res) {
console.log(res.data)
}
})
相信你看懂了這些,就能更有效的對Wordpress進行開發利用了。而且不止是對Wordpress,很多有用的開源軟件,我們都可以用類似的方法加以利用,節約我們開發產品的時間,為我們帶來更多的機會。