Wordpressの"WP REST API"プラグインに関するメモになります。
投稿の一覧を取得するのは、/posts エンドポイントにGETリクエストすればよいのですが、
(ページャ実装などに必要な)総ページ数情報などに気づきにくかったのでメモしておきます。
注意
WP REST API バージョン1の情報です。
バージョン2の仕様については調べていません。
結論
レスポンスヘッダの"X-WP-TotalPages","X-WP-Total"を参照すればよい。
- X-WP-Total
- 総投稿数
- X-WP-TotalPages
- (現在の1ページ当たり表示件数での)総ページ数
簡単な確認方法
※ドメインとかWordpressのディレクトリは適当に伏せております。
確認コマンド(curl)
$ curl -s -D - http://exapmle.com/path/to/wordpress/wp-json/posts -o /dev/null
レスポンスボディを/dev/null
に捨ててレスポンスヘッダのみ表示してます->参考
結果(レスポンスヘッダ一覧)
"X-WP-Total"と"X-WP-TotalPages"が含まれていますね。
記事件数が少ないのでサンプルとしては微妙ですがご容赦ください。
HTTP/1.1 200 OK
Date: Thu, 24 Mar 2016 02:26:40 GMT
Server: Apache/2.2.15 (CentOS)
X-Content-Type-Options: nosniff
X-WP-Total: 2
X-WP-TotalPages: 1
Last-Modified: Wed, 23 Mar 2016 02:37:35 GMT
Link: <http://exapmle.com/path/to/wordpress/wp-json/posts/5>; rel="item"; title="TEST", <http://exapmle.com/path/to/wordpress/wp-json/posts/1>; rel="item"; title="Hello world!"
Content-Length: 4381
Content-Type: application/json; charset=UTF-8
jQueryで確認例
※ 2016/3/24 ちょっと追記
jQueryを使ってAJAXで実装しているのなら、$.ajax
の成功時コールバックの第3引数を見ればよいです
$(function(){
var postsPerPage = 1; // 1ページ当たり件数
var currentPage = 1; // 取得したいページ数
$.ajax({
type: 'GET',
url: '/path/to/wordpress/wp-json/posts', // 適当に読みかえてください
dataType: 'json',
data: {
page: currentPage,
filter : {
posts_per_page: postsPerPage
}
}
})
.done(function(json, textStatus, request){
// このあたりを参照すればよい
console.log(request.getAllResponseHeaders());
console.log(request.getResponseHeader('X-WP-TotalPages')); // 個別に参照するならこうする
console.log(request.getResponseHeader('X-WP-Total')); // 個別に参照するならこうする
})
.fail(function(){
// 失敗時処理
});
});
参考URL
- http://wp-api.org/guides/getting-started.html#getting-posts
- "X-WP-Total"と"X-WP-TotalPages"について説明があります。
- 最初一生懸命、http://wp-api.org/index-deprecated.html を読んでいて途方に暮れた。