😀

WordPressのAPIで記事数を取得する方法

2025/01/19に公開

WordPressをヘッドレスCMSとして利用する場合などに、APIを叩いて記事を取得することがあります。ちなみに、次のようなアドレスで記事一覧を取得できます。

https://example.com/wp-json/wp/v2/posts

この時、取得できる記事の内容は最大で100件までですが、ページネーションを実装するなどで全体で何件あるのか知りたい場合があります。その場合、「ヘッダー」を見ると分かります。次のように、X-WP-Totalというキーで記録されています。

記事数取得

ただし、JSON形式にもなっておらず「:」で区切られた文字列として格納されているので、処理をして取り出さなければなりません。

PHPでの取り出し方法

例えば、PHPで取り出す場合は次のような感じのプログラムで取り出せました。

foreach ($result['headers'] as $header) {
    if (strpos($header, 'X-WP-TotalPages: ') !== false) {
        $json['header']['total'] = str_replace('X-WP-TotalPages: ', '', $header);
    }
}

ヘッダーの内容を1つずつ取り出して、X-WP-TotalPagesというキーがあったら、これを取り出してキー部分を削除して値を取り出します。

なかなか手間がかかりますが、これでページネーションなどが実装できました。

Discussion