WordPress
WP-REST-API

WP REST API(v1)で投稿の総件数、総ページ数など

More than 3 years have passed since last update.

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