2022.07.19 システム
WordPress5.6以降へバージョンアップ後のREST API有効化
あるWordPress5.2のサイトをサーバ移行して、WordPress6へバージョンアップしたところ
「REST API」系の処理が全く動かなくなってしまいました。
同様の現象が発生した方のために解決方法について記載したいと思います。
「REST API」のURLへアクセスすると401エラーが表示されてしまいます。
ベーシック認証の解除
401エラーですので権限周りのエラーです。
管理画面にかかっているベーシック認証を、自分のIPからのアクセスは除外にしたり、
外してみましたがエラーのままでした。
認証の環境変数の設定
調べてみるとサーバによっては以下のいずれかを入れると「REST API」の認証が通るという
記載があったので「.htaccess」に入れてみます。
RewriteCond %{HTTP:Authorization} .
RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{HTTP:Authorization} .
RewriteRule .* – [E=REMOTE_USER:%{HTTP:Authorization}]
ダメでした。。。
プラグインの無効化
以前は「Application Passwords」というプラグインを利用して「REST API」を利用していたが、WordPress5.6から「Application Passwords」が標準になったという記事があり管理画面を確認したところ、、、ありました!
「Application Passwords」プラグイン
ユーザ画面を見ると「アプリケーションパスワード」の入力欄が2項目並んでおりエラーが出ていたので「Application Passwords」プラグインを無効化しました。
「Application Passwords」プラグインを無効化したので、ユーザ画面からアプリケーションパスワードを再設定しようとしましたが
「サイトでは Basic 認証が使われているようですが、現在、アプリケーションパスワードとは互換性がありません。」とメッセージが表示され設定できません。
シークレットウィンドウでの接続
ベーシック認証を外してみましたが、「サイトでは Basic 認証が使われているようですが、現在、アプリケーションパスワードとは互換性がありません。」のメッセージは消えません。
上記のエラーメッセージをサイトで調べても原因が分かりませんでした。。。
キャッシュの影響もあるのかと、シークレットウィンドウで再ログインしたところ、エラーメッセージが消えて「アプリケーションパスワード名」を入力することができるようになりました!
ベーシック認証にログインしていることをブラウザが覚えているため、サイト上のベーシック認証を切っても、管理画面上ではベーシック認証されていると判断されてしまいエラーが表示されてしまったようです。
結論
結果的に、以下の手順で接続することが出来ました。
参考になればと思います。
<設定手順>
1.WordPress管理画面にて「Application Passwords」プラグイン無効化
2.ベーシック認証を無効化
3.シークレットウィンドウでWordPressへログイン
4.WordPress管理画面のユーザ一覧より「REST API」で接続するユーザのリンクを選択
5.任意のアプリケーションパスワード名を追加し、発行されたパスワードをメモ
6.ベーシック認証を再設定
7.発行されたパスワードを「REST API」のプログラムへ反映