[wp]外部に対して投稿、カスタム投稿を出力する方法

「JSON」とか「WP REST API」で検索すると参考記事がいっぱいでてくる。

どういうやつか

WordPressに投稿した内容を別のWEBサイトで取得・表示できるようにしたいねってとき、RSSフィードもあるんだけどそっちは新着のお知らせ程度なので投稿の全部は引っ張ってこれない。

当ブログだとこんな感じ(初期設定のまま)。

MEGE's Factory

設定にもよるけど、取得可能な内容はかなり限られる。

出力内容の拡張は可能なんで、例えばアイキャッチ画像を追加したいならこんな感じの設定をする。

ワードプレスのRSSにサムネイル画像を追加する | ホームページ制作 オフィスオバタ
ワードプレスのRSS情報から、ホームページにブログの更新情報を掲載することがよくあります。 その際に、サムネイル画像も表示したい場合があります。しかし、ワードプレスはRSSにサム...

で、まあ、新着情報だけ欲しいってんじゃなくてソートかけたりとか自サイトの投稿を表示するときみたいな使い方をしたい場合、役割的にRSSで頑張るんじゃなくて「WP REST API」を使うのがいいよねっていうのが一般的な認識。なのでそれをやる話。

WP REST APIってなんぞ

元々はプラグインだったらしい。それがWP本体に内蔵されたんだとか。

WPのDBにある情報をJSON形式で出力できるよっていう機能。

当ブログだとこんな感じ。

https://blog.megefeps.info/wp-json/wp/v2/posts

出力する

何を取得するかは取得側が設定することだけど、そもそも出力される内容というのは出力側が用意するわけで。デフォの状態だと全部出力してるわけじゃないんで、やっていく必要がある。

元々ある投稿については出力されるっぽいけどね。

出力内容は全部だとか、特定のやつだけとか、色々条件をつけたり付けなかったりでやっていける。

WP REST API v2 Documentation
Documentation for version 2.0 of the WP REST API.

出力側は出力可能な内容を増やしたり減らしたりってことができる。

WP REST API から記事やユーザー情報を取得できないようにする | WordPressカスタマイズ事例【100ウェブ】
WordPressは WP REST API という外部からhttp通信でデータを取得・送信できる仕組みを内部に実装しました。 たとえば、以下のサイトにアクセスすれば当サイトのユーザー一覧情報が見られます。 https:

通常の投稿だけじゃなくて、カスタム投稿も出力できる。カスタム投稿毎に公開・非公開の設定ができるし、カスタム投稿のスラッグにも個別の指定ができる。

通常、初期状態では非公開なんで、自作の場合はカスタム投稿の設定内容に公開する旨を追記する。

WordPress REST API で、カスタム投稿タイプなどの情報を取得する | Tips Note by TAM
TAM のテクニカルチームがお届けする WEB技術ブログ!

プラグインでカスタム投稿を作ってる場合、例えばCustomPostType UIでも公開の設定が可能。各設定項目でカスタム投稿毎にREST APIの公開・非公開を設定できる。

誰でも分かる Custom Post Type UI(CPT UI) でカスタム投稿タイプの作り方 | オレインデザイン - 岐阜県岐阜市のWordPress専門家
Custom Post Type UI (CPT UI)というカスタム投稿タイプやカスタム分類を簡単に作成できる便利なWordPressプラグインについて詳しく紹介しています。PHPを記述して登録しなくてはならなかったカスタム投稿タイプを管理画面で簡単に設定することが可能になります。投稿以外にお知らせや施工実績、商品紹...

そんな感じで、WP上にあるものは全部出力できちゃうって思っていい感じ。

カスタムフィールドの出力

投稿に関しては問題ないんだけど、カスタムフィールドは出力できない。というか発信内容に含まれていない。いじれば出力することはできるんだけど、どうやってカスタムフィールドを用意してるかによってもやることが変わってくる。

AdvancedCustomFields

「 AdvancedCustomFields 」でカスタムフィールドを用意した場合はめっちゃ簡単。

作ったフィールドグループの下の方にある「設定」に「Show in REST API」の項目があるので、これを「はい」にすればいい。それだけ。超簡単。

以前は「ACF to REST API」を入れてどうのこうのって手順だったみたいだけど、本当楽になったもんです。

Smart Custom Fields

「Smart Custom Fields」にはREST APIに出力する項目がないので自分でやっていく必要がある。設定はfunctions.php上で行うので平気。

カスタム投稿にカスタムフィールドを追加する場合も、投稿タイプを指定してやっていくだけなのでカスタム投稿を自作設定しようがプラグインで作ろうが関係ないんで、安心。

wordpress rest-apiでカスタムフィールドを出力する際に処理結果を整形したい - Qiita
やりたいこと カスタムフィールドをAPI出力したい。 APIの出力内容を整形したい。 前提条件 WordPress 4.9.3 カスタムフィールド は「Smart Custom Fields」を使用。 カスタム...

でもまあ、出力内容を設定しなきゃいけなくなると手間がすごいんで、そこらへんは頑張らないといけない。

手間的にはAdvancedCustomFieldsが楽でいいんだけど、無料の範囲だと繰り返しが使えるSmartCustomFieldsの方が使い勝手がいいから開発環境によりけり。自分で選べるならいいけど、基本的にはどっちでもやっていけるようにしておけるといいですね。

参考

WordPressのREST APIの使い方 - Qiita
はじめに たまにWordPressのREST APIを使うのですが、毎度毎度使い方を忘れて、なんか同じサイトを行ったり来たりしている自分に腹が立ってきたので、まとめます。。 いつもお世話になっているサイト まずは基本的なこ...

使うときは使うけど使わないときは全然使わないんで厄介。一旦やって素地を作っておいて、現環境に合わせて調整できるくらいにしておけたらいいなって思います。

取得について

出力できるなら取得できる。調べたら出てくる。

WP REST APIでの記事の取得と表示[PHP版 / JS版] | ocws BLOG

以前、jsで取得した記事を書いた。分からんなりに結構頑張ってまとめたと思う。

今回は出力の話だけなのでここまで。

コメント

タイトルとURLをコピーしました