100
113

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WordPressのREST APIの使い方

Last updated at Posted at 2020-01-17

はじめに

たまに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_typeregister_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です。

100
113
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
100
113

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?