WordPress Rest API

1706354740

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

 

WordPress REST APIとは

WordPress REST APIとは、WordPressサイトの外部から、投稿記事やカスタム投稿タイプ、メディアライブラリ、ユーザー情報などのデータを取得したり、操作したりするための仕組み。

 

WP-CLIやURLを介して、JSON形式でデータのやり取りができる。

 

この機能は、WordPressをただのCMSではなく、アプリケーションプラットフォームとして活用することを目的に開発された。REST APIを利用すれば、WordPressの管理画面に入ることなく、プログラムからデータの投稿、編集、更新、削除などの操作が可能になる。

 

REST APIは当初プラグインとして提供されていたが、2016年12月にリリースされたWordPress 4.7から正式に組み込まれた。

 

しかし、その翌年の2017年には深刻な脆弱性が発覚した。

特定のリクエストを送ることで認証をすり抜け、ウェブサイトを改ざんできてしまう状態だった。

この脆弱性により、世界中で約155万ものサイトが被害に遭ったと報告されている。

 

幸いこの脆弱性はWordPress 4.7.2で修正されており、現時点では新たな脆弱性の報告はない。

 

WordPress REST APIの使い方

WP-CLIも使えるが、ここではおいておいて、特定のURLに接続することでJSON形式でデータを取得する方法についてメモ。

 

アプリケーションパスワードの発行方法

投稿取得やカテゴリー取得などの場合は、特に必要ないが、新規投稿や、編集、更新、削除、メディアのアップロードの場合には認証が必要になるので、予めアプリケーションパスワードを発行しておく必要がある。

 

Wordpressにログインし、メニューの、

ユーザープロフィール

 

wp_rest_pass

 

適当な名前を付けて、「新しいアプリケーションパスワードを追加」ボタンをクリック。

 

wp_rest_pass2

 

24桁のパスワードが発行される。

 

 

エンドポイント

Wordpressのパーマリンクの設定によって2通りある。

基本的にはWordpressのURLのあとに以下をつけ足したURL。

 

slug

/wp-json/wp/v2/

 

id

?rest_route=/wp/v2/

 

 

投稿の取得

最新の10件が取得できる

/wp-json/wp/v2/posts

?rest_route=/wp/v2/posts

 

100件取得1ページ目

/wp-json/wp/v2/posts?per_page=100&page=1

?rest_route=/wp/v2/posts&per_page=100&page=1

 

件数指定は最大100まで。それ以上はエラーが返る。

 

カテゴリーを指定して投稿を取得

/wp-json/wp/v2/posts?categories=3

?rest_route=/wp/v2/posts&categories=3

 

ID指定で記事を取得

/wp-json/wp/v2/posts/ID

?rest_route=/wp/v2/posts/ID

 

slug指定で記事を取得

/wp-json/wp/v2/posts?slug=${slug}

?rest_route=/wp/v2/posts&slug=${slug}

 

カテゴリ一覧取得

/wp-json/wp/v2/categories

?rest_route=/wp/v2/categories

 

これだだけだと、カテゴリーが階層化されている場合にすべてが取得できないので、全てのカテゴリを取得(最大100件まで)とする。

 

/wp-json/wp/v2/categories?per_page=100&page=1

?rest_route=/wp/v2/categories&per_page=100&page=1

 

記事のサムネイルを取得する

記事のJSONのfeatured_mediaから画像IDを取得

 

/wp-json/wp/v2/media/画像ID

?rest_route=/wp/v2/media/画像ID