最近のキーワードが、公私混同した場合、WordPress
Go
なので、このようなお話を。
まだ色々と途中なので、記事の尻切れ感も半端ないです。
WordPressで行うこと
https://wordpress.org/plugins/rest-api/
コレを導入するのみです。
http://v2.wp-api.org/reference/
ドキュメントは、読んで理解しておく。
Goで行うこと
APIのドキュメントが割りと揃っていたのでそのまま利用しても良かったのですが、go-wordpressというパッケージがあったので、利用してみました。
こういうのを色々と読むのは、修行中の身としては大変ありがたい経験です。
必要に迫られてやるので、ただボーッと眺めているよりは身になるようです。
お試しのインポートはこんな感じ。
sample.go
package main
import (
"fmt"
"net/http"
"os"
wordpress "github.com/sogko/go-wordpress"
)
環境変数でいくつか持っている値を定義しておきます。
sample.go
type WpEnv struct {
WordPressBaseURL string
WordPressUser string
WordPressPassword string
}
var (
GetWpEnv = func() *WpEnv {
return &WpEnv{
WordPressBaseURL: os.Getenv("WORDPRESS_API_BASE_URL"),,
WordPressUser: os.Getenv("WORDPRESS_USER"),
WordPressPassword: os.Getenv("WORDPRESS_PASSWORD"),
}
}
)
Clientの取得。
sample.go
func getClient() *wordpress.Client {
client := wordpress.NewClient(&wordpress.Options{
BaseAPIURL: GetWpEnv().WordPressBaseURL,
Username: GetWpEnv().WordPressUser,
Password: GetWpEnv().WordPressPassword,
})
return client
}
Taxonomyを取得してみる。
sample.go
func main() {
wpc := getClient()
terms, resp, body, err := wpc.Taxonomies().List(nil)
if err != nil {
fmt.Println("Error:", err)
return
}
if body == nil {
fmt.Println("body nil")
return
}
if resp.StatusCode != http.StatusOK {
fmt.Println(resp.Status)
return
}
if terms == nil {
fmt.Println("terms nil")
return
}
fmt.Println(body)
fmt.Println(resp)
fmt.Println(terms)
}
ということで接続もできてどうとでもなることが分かった!ので、記事を取得して色々できるようです。