新潟県最大級のポータイルサイトを情報技術を駆使して盛り上げたい方を募集しています。

初歩的なところで焦った!WordPress5.5のWP REST APIが動かない場合の解決方法

WordPress4.7以降から標準機能として搭載されたWP REST API、指定のURLでアクセスすることによって、投稿の一覧がJSON形式で取得できるようになったりする便利機能です。
参考:https://ja.wp-api.org/

指定のURLって何?

https://サイトのURL/wp-json/wp/v2/posts

上記のURLでアクセスすると投稿一覧のJSON形式が取得できます。

今回、ここでつまづいてしまいました(涙

さくらVPSの環境にWordPress5.5をインストールし、設定を完了させ、目的の投稿一覧をJSON形式で取得しようとしました。

https://サイトのURL/wp-json/wp/v2/posts

上記URLでアクセスしたところ不思議なことにサイトのトップページにリダイレクトされてしまいます。

???と思ったので、まずは.htaccessの中身を確認しました。

.htaccess

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

特に問題はなさそうです。

下記のURLで表示できるとの情報をゲットしたので早速アクセス。

https://サイトのURL?rest_route=%2Fwp%2Fv2

表示されました!
ということは、WP REST APIは正常に動作していることがわかりました。

他にリダイレクトに関係しそうな項目ということで、いろいろ調査をしていくと

Word Pressのパーマリンクを設定変更しないとデフォルトではトップページにリダイレクトされてしまい、JSON形式で表示されないとか・・・・

知りませんでした!!!

ということで設定→パーマリンク設定から基本となっているパーマリンクから他のパーマリンクに変更して保存し、下記URLにアクセスしたところ無事に表示されることを確認できました♪

取得方法の例

投稿データを全件取得
https://サイトのURL/wp-json/wp/v2/posts/

投稿の数を指定して取得
https://サイトのURL/wp-json/wp/v2/posts/?per_page=2

投稿IDを指定して取得
https://サイトのURL/wp-json/wp/v2/posts/投稿のID/

投稿のIDが「1」の場合
https://サイトのURL/wp-json/wp/v2/posts/1/

投稿を検索して取得
https://サイトのURL/wp-json/wp/v2/posts/?search=wordpress