はじめに
たまにWordPressのREST APIを使うのですが、毎度毎度使い方を忘れて、なんか同じサイトを行ったり来たりしている自分に腹が立ってきたので、まとめます。。
いつもお世話になっているサイト
まずは基本的なこと
WordPress REST API で、カスタム投稿タイプなどの情報を取得する
アイキャッチ取得したいとき
WP REST API v2 WordPressの新着記事をアイキャッチ画像付きで取得する方法
カスタムフィールドの値も取りたいとき
wordpress rest-apiでカスタムフィールドを出力する際に処理結果を整形したい
そもそも独自API作りたいとき
WP REST API を使って独自エンドポイントを設定する。
いつもありがとうございます!神!
いつの間にか公式のREST APIのドキュメントがきれいになってた?元から?
REST API Handbook
↑ちょっと時間があったので、勝手に翻訳してみました。
本格的なところまで手を出そうと思うと、結構難しいです。
REST APIハンドブック
最初に確認するポイント
私はよくカスタム投稿タイプ・カスタムタクソノミーで使用しますが、register_post_type
、register_taxonomy
関数を使うときに、引数に
'show_in_rest' => true,
は入っていますか?
毎回実装するたびに久しぶりになり、今回はこちらではまりました候。
まとめます
カスタム投稿タイプの一覧を取得したい
homeUrl + '/wp-json/wp/v2/{カスタム投稿タイプの名前}'
そのときにアイキャッチもほしい
homeUrl + '/wp-json/wp/v2/{カスタム投稿タイプの名前}?_embed'
{カスタム投稿タイプの名前}
になっているところを、posts
,pages
にしてもらえれば、投稿、固定ページのアイキャッチ画像も取得できます。
アイキャッチのデータへのアクセス
test._embedded['wp:featuredmedia'][0].source_url
プロパティを全部「.」でつなごうとして、途中にある「:」でエラーになってパニックになってました。
プロパティのアクセス方法は[]で囲んでも大丈夫だから落ち着いて。自分。
カスタムタクソノミーで絞り込みたい
homeUrl + '/wp-json/wp/v2/{カスタム投稿タイプの名前}?{カスタムタクソノミー名}=' + termID
カスタムフィールドの値を取得したい
こちらの記事をどうぞ↓
wordpress rest-apiでカスタムフィールドを出力する際に処理結果を整形したい
返ってくる結果、こんなにいらないかも
投稿のAPIを叩くと、1投稿につき、かなりのデータがくっついてきますが、そんなときは、グローバルパラメーターの_fieldsを使ってみてください。
たしかに、投稿のID、タイトル、リンクだけでOKです。というときもありますしね。
取得件数が多い場合などは、APIのレスポンスでデータ量が節約できるのでいいと思います。
/wp/v2/posts?_fields=author,id,excerpt,title,link
とりあえずどんなレスポンスが返ってくるのか見てみたい
こちらのサイトでは、公式が用意してくれているAPIを試すことができます。
あくまで認証が必要ない投稿の取得などになりますが。
ターミナルを開いて、以下のコマンドを実行してみてください。
$ curl https://demo.wp-api.org/wp-json/
このサイトのAPIのエンドポイントの一覧などを取得することができます。
投稿一覧を取得するには、以下のコマンドを実行してください。
$ curl https://demo.wp-api.org/wp-json/wp/v2/posts/
投稿が10件取得できたと思います。
結果はjsonで返ってきますので、jsonのフォーマット用にjqコマンドをおすすめします。
jqコマンドをインストールして、取得した結果をパイプでつないで、jqコマンドでフォーマットすればOKです。