WP REST APIを使ってWordPressをAPI化してみよう!

ヤスタカ


WP REST APIを使ってWordPressをAPI化してみよう!

こんにちは。バックエンドエンジニアのヤスタカです。

前回の記事(前回の記事へのリンク入れる)では WordPress でいろいろなデータの取得方法について、WP_Query を使って紹介しました。


今回はこれを REST API 化してみようと思います。

使うプラグインはこちら、WP REST API(versino2) です。
wp_rest_api

「このプラグインを有効にすると、Wordpress で投稿した情報を簡単に json 形式で返してくれる API ができるので、俺は PHP なんか書きたくない! javascript が書きたいんだ!!」

って人は、Wordpress の管理画面だけを利用して、後は自分の好きなように javascript で実装できるかもしれませんね\(^o^)/

 

導入してみる

それではさっそく WP REST API の使い方を見ていきましょう。この導入はとっても簡単です。

とりあえず動かす

“まずは習うより慣れろ”ということで、プラグインを有効化したらご自分の WordPress 環境の URL にアクセスしてみましょう。

>> http://example.com/wp-json/

こんな風に json データが返ってきたら成功です。

[jsonデータのサンプル]
続いては投稿のデータを取得してみましょう。

>> http://example.com/wp-json/wp/v2/posts

すると、投稿データの情報が json で返ってきます。なにこれ便利!
ちなみに個別記事の取得はこちらで。

>> http://example.com/wp-json/wp/v2/posts/123

このように記事 ID を付与してあげると、特定の記事の情報のみ取得できます。

いろいろな記事の取得方法

さらに、記事のなかから特定のカテゴリに所属するものや特定のキーワードをもつものなど、記事のフィルターや取得する記事数などの指定もできます。

それでは、やってみましょう。

>> http://example.com/wp-json/wp/v2/posts/?filter[s]=lig

このようにすれば、lig という特定のキーワードをもつ記事をフィルターすることができます。
他にも、あるカテゴリーの所属するものだけを取得するときは

>> http://example.com/wp-json/wp/v2/posts/?filter[category]=backend

とすればbackendカテゴリーの記事を取得できます。
>> http://example.com/wp-json/wp/v2/posts/?filter[s]=lig&filter[category]=backend

こんなふうにすれば複数条件での検索もできますし、他にも
oder, oderby, post_per_page など get_posts で使うようなオプション指定はだいたいできるので、記事を自由に絞りこめると思います。

記事以外の情報を取得してみる

WP REST API で取得可能な情報は、記事データだけではありません。カテゴリーやタグ、ユーザー情報、カスタム投稿やカスタムタクソノミーのデータについても同じように取得できます。
カテゴリーの場合は
>> http://example.com/wp-json/wp/v2/categories

タグの場合は
>> http://example.com/wp-json/wp/v2/tags

ユーザーの場合は
>> http://example.com/wp-json/wp/v2/users

で取得できます。

カスタム投稿タイプ・カスタムタクソノミーのデータを取得

カスタム投稿タイプとカスタムタクソノミーのデータを取得するには、事前にある設定をしておく必要があります。
register_post_typeまたはregister_taxonomy で設定する際に、

‘show_in_rest’ => true,

にしておく必要があります。
こうすると、例えばnewsというカスタム投稿タイプを設定した場合、http://example.com/wp-json/wp/v2/news/ という URL で NEWS 投稿タイプの一覧が、
http://example.com/wp-json/wp/v2/news/123
でnews投稿タイプの個別記事のデータが取得できす。

カスタムフィールドの値を取得

投稿には記事タイトルと本文だけではなく、カスタムフィールドでさまざまな情報を持たせることがあると思うのですが、デフォルトのままでは WP REST API でカスタムフィールドの値にはアクセスできないようになっているようです。

僕はカスタムフィールドを使う場合、Advanced Custom Field というプラグインを使うことが多いので、こちらのプラグインをインストールすると、WP REST APIでもカスタムフィールドの値を取得できるようになります。

acf_to_rest_api

ACF to REST API

 

まとめ

WP REST API を使えば、簡単で、あっという間に WordPress を使った API が作れますね。実はこの機能、一部ですでに WordPress の標準機能に組み込まれているようで、プラグインなしでも一部の機能は実装できるみたいでした……。

今回は get メソッドでのデータの取得をメインにご紹介しましたが、post メソッドでのデータの追加・更新・削除なども機能として実装できます。ドキュメントも本家サイトにしっかりしたものがあるので、API を作る際にはぜひ利用してみてください!

ヤスタカ
この記事を書いた人
ヤスタカ

バックエンドエンジニア

関連記事