WP REST APIでWordCampサイトからセッション情報を取得する

2016年もWP REST APIとかElasticsearch APIとかAWSのAPIをぶっ叩いていきますヾ(:3ノシヾ)ノシ

というわけでWordCampサイト向けにカスタマイズされているWP REST API(Version1)からいろいろデータを取ってみます。

さっそくセッション情報を取得する

WordCampサイトのURLに「wp-json/posts?type=wcb_session」を追加することでJSON形式のセッションデータを引っこ抜けます。
[bash]
% curl -XGET https://kansai.wordcamp.org/2015/wp-json/posts?type=wcb_session | jq ".[0]" (git)-[master]
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 248k 0 248k 0 0 99460 0 –:–:– 0:00:02 –:–:– 99442
{
"ID": 4500,
"title": "先取り!WordPress と PHP 7",
"status": "publish",
"type": "wcb_session",
"author": {
"ID": 13894222,
"username": "hideokamoto",
"name": "Okamoto Hidetaka",
"first_name": "Okamoto",
"last_name": "Hidetaka",
"nickname": "hideokamoto",
"slug": "hideokamoto",
"URL": "https://wp-kyoto.net/",
"avatar": "https://secure.gravatar.com/avatar/75486cbfd37125f121cf4a6c5614601c?s=96",
"description": "",
"registered": "2014-06-18T03:42:07+00:00",
"meta": {
"links": {
"self": "https://kansai.wordcamp.org/2015/wp-json/users/13894222",
"archives": "https://kansai.wordcamp.org/2015/wp-json/users/13894222/posts"
}
}
},
"content": "<h2>セッション概要</h2>\n<p>PHP 7 とは、今秋リリースを目指して、現在開発が進んでいる次期メジャーバージョンの PHP です。<br />\n12 年ぶりのメジャーバージョンアップとなる PHP 7 では、数々の新機能や変更が加えられています。<br />\n本セッションでは、PHP 7 の基本的な変更点について解説を行い、さらに、WordPress を PHP 7 で動かした際の影響などを検証していきます。<br />\n次世代の PHP である PHP 7 を一足先に触れてみましょう。</p>\n<div class=\"clfix\">\n<div class=\"block-left\">\n<section>\n<h3 class=\"session-place\">場所</h3>\n<p>2Fセッション講堂</p>\n</section>\n<section>\n<h3 class=\"session-time\">時間</h3>\n<p>7/26(日曜日) 16:00-16:30</p>\n</section>\n</div>\n<div class=\"block-right\">\n<section>\n<h3>登壇者プロフィール</h3>\n<div class=\"profile-box\">\n<p class=\"thumb\"><img src=\"https://0.gravatar.com/avatar/f7351ae40529bdbb639b2a727e073314?s=100&amp;d=mm&amp;r=g【変更】グラバター\" alt=\"新原 雅司\" width=\"100\" height=\"100\" class=\"alignnone size-thumbnail wp-image-478063\" /></p>\n<div class=\"inner\">\n<h4>新原 雅司</h4>\n<div class=\"more\"><a href=\"https://kansai.wordcamp.org/2015/speakers/#wcorg-speaker-shinbara\">&gt; プロフィール詳細</a></div>\n</div>\n</div>\n</section>\n</div>\n</div>\n<div class=\"btn\"><a href=\"https://kansai.wordcamp.org/2015/tickets/\">WordCamp Kansai 2015に参加登録する</a></div>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-icon sd-sharing\"><h3 class=\"sd-title\">共有:</h3><div class=\"sd-content\"><ul><li class=\"share-facebook\"><a rel=\"nofollow\" data-shared=\"sharing-facebook-4500\" class=\"share-facebook sd-button share-icon no-text\" href=\"https://kansai.wordcamp.org/2015/session/wordpress-and-php7/?share=facebook\" target=\"_blank\" title=\"Facebook で共有\"><span></span><span class=\"sharing-screen-reader-text\">Facebook で共有 (新しいウィンドウで開きます)</span></a></li><li class=\"share-twitter\"><a rel=\"nofollow\" data-shared=\"sharing-twitter-4500\" class=\"share-twitter sd-button share-icon no-text\" href=\"https://kansai.wordcamp.org/2015/session/wordpress-and-php7/?share=twitter\" target=\"_blank\" title=\"クリックして Twitter で共有\"><span></span><span class=\"sharing-screen-reader-text\">クリックして Twitter で共有 (新しいウィンドウで開きます)</span></a></li><li class=\"share-google-plus-1\"><a rel=\"nofollow\" data-shared=\"sharing-google-4500\" class=\"share-google-plus-1 sd-button share-icon no-text\" href=\"https://kansai.wordcamp.org/2015/session/wordpress-and-php7/?share=google-plus-1\" target=\"_blank\" title=\"クリックして Google+ で共有\"><span></span><span class=\"sharing-screen-reader-text\">クリックして Google+ で共有 (新しいウィンドウで開きます)</span></a></li><li class=\"share-pocket\"><a rel=\"nofollow\" data-shared=\"\" class=\"share-pocket sd-button share-icon no-text\" href=\"https://kansai.wordcamp.org/2015/session/wordpress-and-php7/?share=pocket\" target=\"_blank\" title=\"クリックして Pocket でシェア\"><span></span><span class=\"sharing-screen-reader-text\">クリックして Pocket でシェア (新しいウィンドウで開きます)</span></a></li><li class=\"share-tumblr\"><a rel=\"nofollow\" data-shared=\"\" class=\"share-tumblr sd-button share-icon no-text\" href=\"https://kansai.wordcamp.org/2015/session/wordpress-and-php7/?share=tumblr\" target=\"_blank\" title=\"クリックして Tumblr で共有\"><span></span><span class=\"sharing-screen-reader-text\">クリックして Tumblr で共有 (新しいウィンドウで開きます)</span></a></li><li class=\"share-end\"></li></ul></div></div></div>",
"parent": null,
"link": "https://kansai.wordcamp.org/2015/session/wordpress-and-php7/",
"date": "2015-07-18T15:06:59",
"modified": "2015-07-22T13:54:01",
"format": "standard",
"slug": "wordpress-and-php7",
"guid": "https://kansai.wordcamp.org/2015/?post_type=wcb_session&#038;p=4500",
"excerpt": "<p>セッション概要 PHP 7 とは、今秋リリースを目指して、現在開発が進んでいる次期メジャーバージョンの PHP です。 12 年ぶりのメジャーバージョンアップとなる PHP 7 では、数々の新機能や変更が加えられています。 本セッションでは、PHP 7 の基本的な変更点について解説を行い、さらに、WordPress を PHP 7 で動かした際の影響などを検証していきます。 次世代の PHP である PHP 7 を一足先に触れてみましょう。 場所 2Fセッション講堂 時間 7/26(日曜日) 16:00-16:30 登壇者プロフィール 新原 雅司 &gt; プロフィール詳細 WordCamp Kansai 2015に参加登録する</p>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-icon sd-sharing\"><h3 class=\"sd-title\">共有:</h3><div class=\"sd-content\"><ul><li class=\"share-facebook\"><a rel=\"nofollow\" data-shared=\"sharing-facebook-4500\" class=\"share-facebook sd-button share-icon no-text\" href=\"https://kansai.wordcamp.org/2015/session/wordpress-and-php7/?share=facebook\" target=\"_blank\" title=\"Facebook で共有\"><span></span><span class=\"sharing-screen-reader-text\">Facebook で共有 (新しいウィンドウで開きます)</span></a></li><li class=\"share-twitter\"><a rel=\"nofollow\" data-shared=\"sharing-twitter-4500\" class=\"share-twitter sd-button share-icon no-text\" href=\"https://kansai.wordcamp.org/2015/session/wordpress-and-php7/?share=twitter\" target=\"_blank\" title=\"クリックして Twitter で共有\"><span></span><span class=\"sharing-screen-reader-text\">クリックして Twitter で共有 (新しいウィンドウで開きます)</span></a></li><li class=\"share-google-plus-1\"><a rel=\"nofollow\" data-shared=\"sharing-google-4500\" class=\"share-google-plus-1 sd-button share-icon no-text\" href=\"https://kansai.wordcamp.org/2015/session/wordpress-and-php7/?share=google-plus-1\" target=\"_blank\" title=\"クリックして Google+ で共有\"><span></span><span class=\"sharing-screen-reader-text\">クリックして Google+ で共有 (新しいウィンドウで開きます)</span></a></li><li class=\"share-pocket\"><a rel=\"nofollow\" data-shared=\"\" class=\"share-pocket sd-button share-icon no-text\" href=\"https://kansai.wordcamp.org/2015/session/wordpress-and-php7/?share=pocket\" target=\"_blank\" title=\"クリックして Pocket でシェア\"><span></span><span class=\"sharing-screen-reader-text\">クリックして Pocket でシェア (新しいウィンドウで開きます)</span></a></li><li class=\"share-tumblr\"><a rel=\"nofollow\" data-shared=\"\" class=\"share-tumblr sd-button share-icon no-text\" href=\"https://kansai.wordcamp.org/2015/session/wordpress-and-php7/?share=tumblr\" target=\"_blank\" title=\"クリックして Tumblr で共有\"><span></span><span class=\"sharing-screen-reader-text\">クリックして Tumblr で共有 (新しいウィンドウで開きます)</span></a></li><li class=\"share-end\"></li></ul></div></div></div>",
"menu_order": 0,
"comment_status": "closed",
"ping_status": "closed",
"sticky": false,
"date_tz": "Etc/GMT+9",
"date_gmt": "2015-07-18T06:06:59",
"modified_tz": "Etc/GMT+9",
"modified_gmt": "2015-07-22T04:54:01",
"meta": {
"links": {
"self": "https://kansai.wordcamp.org/2015/wp-json/posts/4500",
"author": "https://kansai.wordcamp.org/2015/wp-json/users/13894222",
"collection": "https://kansai.wordcamp.org/2015/wp-json/posts",
"replies": "https://kansai.wordcamp.org/2015/wp-json/posts/4500/comments",
"version-history": "https://kansai.wordcamp.org/2015/wp-json/posts/4500/revisions"
}
},
"terms": {
"wcb_track": [
{
"ID": 23,
"name": "2Fセッション講堂",
"slug": "2f%e3%82%bb%e3%83%83%e3%82%b7%e3%83%a7%e3%83%b3%e8%ac%9b%e5%a0%82",
"description": "",
"taxonomy": "wcb_track",
"parent": null,
"count": 18,
"link": "https://kansai.wordcamp.org/2015/track/2f%e3%82%bb%e3%83%83%e3%82%b7%e3%83%a7%e3%83%b3%e8%ac%9b%e5%a0%82/",
"meta": {
"links": {
"collection": "https://kansai.wordcamp.org/2015/wp-json/taxonomies/wcb_track/terms",
"self": "https://kansai.wordcamp.org/2015/wp-json/taxonomies/wcb_track/terms/460538"
}
}
}
]
},
"post_meta": [
{
"ID": 20627,
"key": "_wcpt_session_time",
"value": "1437928200"
},
{
"ID": 20628,
"key": "_wcpt_session_type",
"value": "session"
}
],
"speaker": null
}
[/bash]
特筆すべきなのはtermsとpost_metaの値でしょうか。

一旦ここだけ抜き出してみましょう。
[js]

"terms": {
"wcb_track": [
{
"ID": 23,
"name": "2Fセッション講堂",
"slug": "2f%e3%82%bb%e3%83%83%e3%82%b7%e3%83%a7%e3%83%b3%e8%ac%9b%e5%a0%82",
"description": "",
"taxonomy": "wcb_track",
"parent": null,
"count": 18,
"link": "https://kansai.wordcamp.org/2015/track/2f%e3%82%bb%e3%83%83%e3%82%b7%e3%83%a7%e3%83%b3%e8%ac%9b%e5%a0%82/",
"meta": {
"links": {
"collection": "https://kansai.wordcamp.org/2015/wp-json/taxonomies/wcb_track/terms",
"self": "https://kansai.wordcamp.org/2015/wp-json/taxonomies/wcb_track/terms/460538"
}
}
}
]
},
"post_meta": [
{
"ID": 20627,
"key": "_wcpt_session_time",
"value": "1437928200"
},
{
"ID": 20628,
"key": "_wcpt_session_type",
"value": "session"
}
],
[/js]
はい。
termsの中には登壇する場所(トラック)情報が入っています。
post_metaの「”key”: “_wcpt_session_time”」という値をみると、セッションの開始時間がunixのタイムスタンプ形式で入っています。

post_metaなどはWP REST APIそのままでは出てこない値(なはず)ですので、興味がある方はWordPress/meta-environmentを立ち上げてみてソースコードなどを見てみるといいかもしれません。

「wordcamp.dev/public_html/wp-content/mu-plugins/wcorg-json-api.php」というファイルにいろいろ載っている様子です。

もっとも、Version1を使っていますのでVersion2にはそのまま使えないということは要注意です。

Follow me!

Okamoto Hidetaka
デジタルキューブのインフラエンジニア。勉強会に和太鼓の練習から直行することが多く「太鼓の人」とかよばれてます。 思いつきで公式ディレクトリにテーマやプラグインをアップしたりテーマレビューやったりしています。 AWS / WordPress / LinkedOpenData周りで活動していて、APIをどうこうして何か作るというのが多いです。 ひとこと
mautic is open source marketing automation