WordPressでREST API エラーの対処方法

投稿日:

更新日:

カテゴリ:

最近WordPressには「サイトヘルス」があることを知りました。

場所は管理画面の「ツール」→「サイトヘルス」ですが、覗いでみたら、なんと、次のように「2件の致命的な問題」だとか。。

REST API でエラーが発生しました REST API は WordPress や他のアプリケーションがサーバーと通信する手段の1つです。たとえば、ブロックエディターの画面は投稿や固定ページの表示や保存のために REST API を使用しています。 REST API のテスト時に、エラーが発生しました: REST API エンドポイント: https://www.ukilab.net/wp-json/wp/v2/types/post?context=edit REST API レスポンス: (http_request_failed) cURL error 28: Connection timed out after 10002 milliseconds --- サイトでループバックリクエストが完了できませんでした ループバックリクエストは予約イベントの実行に使用されます。またテーマやプラグインの組み込みエディターでは、コードの安定性の確認に使用されます。 サイトへのループバックリクエストは失敗しました。現在、依存する機能は想定どおりに動作していません。 エラー: cURL error 28: Connection timed out after 10000 milliseconds (http_request_failed)

検索してみたら、ピント来る回答はなかったが、なんとなくDNSの問題ではありそうなところが分かりました。

サーバ中に入って、次のようにREST APIエンドポイント対してcurlでGETしてみたら、やっぱり似たエラーが出ました。

$ curl https://www.ukilab.net/wp-json/wp/v2/types/post?context=edit
curl: (28) Failed to connect to ukilab.net port 443 after 131018 ms: Connection timed out

まあ、つまりWordPressがcurlを使って自分のサイトに対してjsonの何かを投げたいけど、自分のサイトのドメインを解決できないのでタイムアウトになったということですね。

結果、次のように/etc/hostsの127.0.0.1の最後に自分のドメインを追加したら無事前述問題が解消されました。

127.0.0.1 localhost ukilab.net

問題発生したWordPressはVPSで構築しているので、root権限はあります。
そうでなければ、/etc/hostsはいじれないはずです。

他のサイトでよく書かれるプラグインの無効化や.htaccessをいじる方法以外に、ご参考になれたら嬉しいです。


投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

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