「JSON」とか「WP REST API」で検索すると参考記事がいっぱいでてくる。
どういうやつか
WordPressに投稿した内容を別のWEBサイトで取得・表示できるようにしたいねってとき、RSSフィードもあるんだけどそっちは新着のお知らせ程度なので投稿の全部は引っ張ってこれない。
当ブログだとこんな感じ(初期設定のまま)。
設定にもよるけど、取得可能な内容はかなり限られる。
出力内容の拡張は可能なんで、例えばアイキャッチ画像を追加したいならこんな感じの設定をする。
で、まあ、新着情報だけ欲しいってんじゃなくてソートかけたりとか自サイトの投稿を表示するときみたいな使い方をしたい場合、役割的にRSSで頑張るんじゃなくて「WP REST API」を使うのがいいよねっていうのが一般的な認識。なのでそれをやる話。
WP REST APIってなんぞ
元々はプラグインだったらしい。それがWP本体に内蔵されたんだとか。
WPのDBにある情報をJSON形式で出力できるよっていう機能。
当ブログだとこんな感じ。
出力する
何を取得するかは取得側が設定することだけど、そもそも出力される内容というのは出力側が用意するわけで。デフォの状態だと全部出力してるわけじゃないんで、やっていく必要がある。
元々ある投稿については出力されるっぽいけどね。
出力内容は全部だとか、特定のやつだけとか、色々条件をつけたり付けなかったりでやっていける。
出力側は出力可能な内容を増やしたり減らしたりってことができる。
通常の投稿だけじゃなくて、カスタム投稿も出力できる。カスタム投稿毎に公開・非公開の設定ができるし、カスタム投稿のスラッグにも個別の指定ができる。
通常、初期状態では非公開なんで、自作の場合はカスタム投稿の設定内容に公開する旨を追記する。
プラグインでカスタム投稿を作ってる場合、例えばCustomPostType UIでも公開の設定が可能。各設定項目でカスタム投稿毎にREST APIの公開・非公開を設定できる。
そんな感じで、WP上にあるものは全部出力できちゃうって思っていい感じ。
カスタムフィールドの出力
投稿に関しては問題ないんだけど、カスタムフィールドは出力できない。というか発信内容に含まれていない。いじれば出力することはできるんだけど、どうやってカスタムフィールドを用意してるかによってもやることが変わってくる。
AdvancedCustomFields
「 AdvancedCustomFields 」でカスタムフィールドを用意した場合はめっちゃ簡単。
作ったフィールドグループの下の方にある「設定」に「Show in REST API」の項目があるので、これを「はい」にすればいい。それだけ。超簡単。
以前は「ACF to REST API」を入れてどうのこうのって手順だったみたいだけど、本当楽になったもんです。
Smart Custom Fields
「Smart Custom Fields」にはREST APIに出力する項目がないので自分でやっていく必要がある。設定はfunctions.php上で行うので平気。
カスタム投稿にカスタムフィールドを追加する場合も、投稿タイプを指定してやっていくだけなのでカスタム投稿を自作設定しようがプラグインで作ろうが関係ないんで、安心。
でもまあ、出力内容を設定しなきゃいけなくなると手間がすごいんで、そこらへんは頑張らないといけない。
手間的にはAdvancedCustomFieldsが楽でいいんだけど、無料の範囲だと繰り返しが使えるSmartCustomFieldsの方が使い勝手がいいから開発環境によりけり。自分で選べるならいいけど、基本的にはどっちでもやっていけるようにしておけるといいですね。
参考
使うときは使うけど使わないときは全然使わないんで厄介。一旦やって素地を作っておいて、現環境に合わせて調整できるくらいにしておけたらいいなって思います。
取得について
出力できるなら取得できる。調べたら出てくる。
以前、jsで取得した記事を書いた。分からんなりに結構頑張ってまとめたと思う。
今回は出力の話だけなのでここまで。
コメント