開発日誌の更新が遅れてしまいまして、申し訳ございません。
前回は、UnityでWebGLを吐き出す方法について、ご紹介しました。
今回は、WordPress の REST API を実行して取得できるデータについて、ご紹介します。
■REST API で取得できる情報について
WordPress の REST API については、リファレンスがまとめられています。
公式リファレンス
インターネットで検索をした場合、version1 の際の情報が、
数多く検索されますが、現在の REST API は version2 になります。
どんなデータが取得できるか、どんな検索条件を利用できるのかは、
上記リファレンスにまとまっています。
ただ、以下のようなケースでは、「結局はリファレンスに記載の情報が取れるのだけど、
取得の方法が、わかりにくい」です。
・マルチサイトはどうなるの?
・カスタム投稿はどうなるの?
・カスタムタクソノミーはどうなるの?
今回は、これらについて、簡単ですがまとめさせて頂きます。
■マルチサイトについて
サブディレクトリ型のマルチサイトは、普通にページを表示する場合、
以下のような形になります。
マルチサイト毎に、1階層分のディレクトリが切られます。
・トップページ
http://<あなたのサイトのドメイン>/index.php
・サブドメイン型のマルチサイトのトップページ
http://<あなたのサイトのドメイン>/<マルチサイトのディレクトリ名>/index.php
REST API を実行するときも同様の指定になります。
・トップページ
http://<あなたのサイトのドメイン>/wp-json/wp/v2/posts
・サブドメイン型のマルチサイトのトップページ
http://<あなたのサイトのドメイン>/<マルチサイトのディレクトリ名>/wp-json/wp/v2/posts
■カスタム投稿について
リファレンスを確認すると、普通の「投稿」は「/wp-json/wp/v2/posts」でアクセスすることになっています。
カスタム投稿については、それぞれにアクセスする際の名前を付けることが出来ます。
もし、名前を「custom01」とつけたのでしたら、「/wp-json/wp/v2/custom01」で、投稿記事の一覧を
取得することが出来ます。
しかし、WordPress側で、カスタム投稿を増減したり、アクセスする際の名前を変更した場合に、
REST API を実行するプログラム側にも手を加えるのは、少々面倒です。
実は、カスタム投稿も含めて、「投稿」に関する情報を取得できるAPIがあります。
リファレンスにも記載がありますが、「投稿タイプ」というものです。
この、「投稿タイプ」も絡めて、カスタム投稿の記事を取得する方法は、以下の通りです。

<図1 投稿タイプ取得フロー>
まず、投稿タイプのAPIを実行します。
すると、以下のようなJSONデータが取れます。
※非常に長くなるので、必要な個所のみ抜粋しています
{ "page": { "_links": { "wp:items": [ { "href": "http://<あなたのサイトのドメイン>/<マルチサイトのディレクトリ名>/wp-json/wp/v2/pages" } ] }, "name": "固定ページ", }, "post": { "_links": { "wp:items": [ { "href": "http://<あなたのサイトのドメイン>/<マルチサイトのディレクトリ名>/wp-json/wp/v2/posts" } ] }, "name": "投稿", }, "custom01": { "_links": { "wp:items": [ { "href": "http://<あなたのサイトのドメイン>/<マルチサイトのディレクトリ名>/wp-json/wp/v2/custom01" } ] }, "name": "カスタム投稿01", }, "custom02": { "_links": { "wp:items": [ { "href": "http://<あなたのサイトのドメイン>/<マルチサイトのディレクトリ名>/wp-json/wp/v2/custom02" } ] }, "name": "カスタム投稿02", }, }
御覧の通り、WordPressに標準で備わっている「固定ページ」「投稿」も、「カスタム投稿」も、
すべて一覧として収集できています。
さらに、各要素の、「_links」「wp:items」「0」「href」のところに記載のものが、
それぞれの記事一覧取得用のURLになります。
たとえば、「custom01」の記事一覧を取得した場合、取得できる内容は、
リファレンスの「投稿」と同じものになります。
■カスタムタクソノミー
リファレンスを確認すると、普通の「カテゴリ」は「/wp-json/wp/v2/categories」でアクセスすることになっています。
カスタムタクソノミーも、カスタム投稿と同様に、それぞれにアクセスする際の名前を付けることが出来ます。
もし、名前を「taxonomy01」とつけたのでしたら、「/wp-json/wp/v2/taxonomy01」で、
カスタムタクソノミーに設定されている項目の一覧を取得できます。
こちらについても、投稿の時と同じように、「カテゴリ」「タブ」「カスタムタクソノミー」のすべてを
取得できるAPIがあります。リファレンスに記載の、「タクソノミー」です。
この、「タクソノミー」も絡めて、カスタムタクソノミーを取得する方法は、以下の通りです。

<図2 タクソノミー取得フロー>
まず、タクソノミーのAPIを実行します。
すると、以下のようなJSONデータが取れます。
※非常に長くなるので、必要な個所のみ抜粋しています
{ "taxonomy01": { "_links": { "wp:items": [ { "href": "http://<あなたのサイトのドメイン>/<マルチサイトのディレクトリ名>/wp-json/wp/v2/taxonomy01" } ] }, "name": "カスタムタクソノミー01", }, "category": { "_links": { "wp:items": [ { "href": "http://<あなたのサイトのドメイン>/<マルチサイトのディレクトリ名>/wp-json/wp/v2/categories" } ] }, "name": "カテゴリー", }, "post_tag": { "_links": { "wp:items": [ { "href": "http://<あなたのサイトのドメイン>/<マルチサイトのディレクトリ名>/wp-json/wp/v2/tags" } ] }, "name": "タグ", } }
御覧の通り、WordPressに標準で備わっている「カテゴリー」「タグ」も、「カスタムタクソノミー」も、
すべて一覧として収集できています。
さらに、各要素の、「_links」「wp:items」「0」「href」のところに記載のものが、
それぞれのタクソノミー一覧取得用のURLになります。
たとえば、「taxonomy01」の一覧を取得した場合、取得できる内容は、
リファレンスの「カテゴリ」と同じものになります。
■まとめ
REST API を実行することで、WordPressで持っている様々な情報が収集できますが、
カスタム投稿や、カスタムタクソノミーについても、今回ご紹介した方法を使えば
投稿データや、カテゴリデータと同じように取得することが出来ます。
次回は、実際にREST APIを、JavaScriptで実行して、HTMLページの中に埋め込んでみようと思います。
弊社では全国各地の請負い(ご自宅)で作業協力頂ける、フリーランスエンジニアの方を常時探しております。
ご興味ある方は、お気軽にお問い合わせ下さい。