[WordPress] REST API のご紹介 -2-

開発日誌の更新が遅れてしまいまして、申し訳ございません。

前回は、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ページの中に埋め込んでみようと思います。


弊社では全国各地の請負い(ご自宅)で作業協力頂ける、フリーランスエンジニアの方を常時探しております。
ご興味ある方は、お気軽にお問い合わせ下さい。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*