⚠️ 記事内に広告を含みます。

WordPress REST APIで記事の情報を取得する方法と使い方

WP REST APIとは?

WP REST APIはHTTPベースのREST APIです。

WP REST APIを利用することで、投稿された記事の内容を様々な言語やサーバ上から取得できます。

WordPressはPHPとDB(MySQL)を利用したブログソフトウェアです。

投稿した記事はPHPにより動的にページ生成されて表示されます。

このページ生成はWordPressが設置されているサーバ内のPHPによって行われていて、通常DBにある情報を直接別サーバから取り出すことはできません。

PHPにより生成されたWebページ以外に情報を取得したい!という場合にこのWP REST APIが使えます。

https://ja.wp-api.org/

apiで取得できる情報

  • id ユニークなID
  • date 記事が投稿された日時
  • modified: 記事が修正された日時(defaultのタイムゾーン)
  • status: 投稿状態(publish, future(予約投稿), draft(下書き), private (非公開)
  • title: 記事タイトル
  • content: 記事内容
  • categories: カテゴリ

記事内容を全件取得する

記事内容やタイトルなどを全件取得するには工夫が必要です。

一度のリクエストでは最大100件した取得できないからです(per_page=100とすると最大の100件が取得できる)

https://example.com/wp-json/wp/v2/posts?per_page=100&offset=0

例えば下記のようなシェルスクリプトで取得します

# cat script
=================
#!/bin/bash

_num=100

# 取得したいWordPressのURL
_URL='https://example.com/wp-json/wp/v2/'

#投稿全件数
_total_post=`curl -sIL "${_URL}posts?per_page=100&offset=0" | grep x-wp-total: |awk '{print $2}'| sed -e 's/\r/\n/g'`

# 最大オフセット数
_offset=`expr ${_total_post} / ${_num} \* ${_num}`

# テキストの初期化
: > ./wp.csv
: > ./wp.content
#実行


#ID, タイトル、URL、最終更新日をcsv化する
for i in `eval echo {0..${_offset}..100}`; do curl -s "${_URL}posts?per_page=100&offset=${i}" | jq -r '.[] | [.id, .title.rendered, .link, .modified]| @csv' >> wp.csv ; done

# 本文を取得する
for i in `eval echo {0..${_offset}..100}`; do curl -s "${_URL}posts?per_page=100&offset=${i}" | jq -r '.[] | [.link, .title.rendered, .content.rendered]| @csv' >> wp.content ; done
=================
# ./script

コメントを残す

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