WordPressサイトに編集を加える際、「更新に失敗しました」または「公開に失敗しました」といったエラーメッセージが表示されることがあります。これでは、訪問者に必要な情報を提供できなくなるため厄介です。
しかしこのエラーメッセージには、一般的な原因と回避策があるのでご安心を。ちょっとしたトラブルシューティングで、すぐに通常通りにコンテンツを投稿することができるようになります。
今回はWordPressの「更新に失敗しました」と「公開に失敗しました」エラーの原因、そしてエラーを解決または回避するための4つのステップを詳しくご紹介していきます。
WordPressでコンテンツの更新や公開に失敗する原因
ブロックエディターのGutenbergは、現在WordPressの標準エディターになっていますが、いまだ様々な意見があり、ブロックエディター特有のエラーや課題も報告されています。
そのひとつが、今回ご紹介する「更新に失敗しました」および「公開に失敗しました」のエラーメッセージです。
このエラーは、コンテンツを更新しようとして「公開」ボタンをクリックすると表示されることがあります。すでに公開済みの投稿や固定ページに変更を加える場合、このメッセージは「更新に失敗しました」になります。
この問題はブロガーはもちろん、ウェブページの重要な情報を更新したいサイト所有者にとっても頭痛の種に。
発生原因はいくつか考えられますが、ブロックエディターは投稿の作成、保存、公開をREST APIに依存しています。このプロセスをサイトの何かがブロックまたは無効にしていると、コンテンツを投稿することができなくなります。
WordPressを使い始めたばかりの方や、技術的な知識を持たない方は、REST APIについてあまり馴染みがないかもしれませんが、ここではREST APIがブロックエディターとWordPressの通信手段になるという点だけ覚えておいてください。
この通信が壊れたり無効になったりすると、ブロックエディターの公開機能が動作しなくなります。したがって、サイトでこのエラーが発生している場合は、REST APIを使用できるようにする必要があります。
WordPressの更新失敗と公開失敗エラーを解決する方法(4つのステップ)
WordPressコンテンツの更新や公開に失敗する原因が理解できると、問題の解決は簡単になります。以下、トラブルシューティング方法を4つのステップでご紹介します。
1. REST APIがブロックされているかどうかを確認する
WordPressで「公開に失敗しました」エラーが表示される一般的な原因は、ブロックエディターの導入以降は特に、REST APIがブロックされているまたは無効になっていることにあります。したがって、まずはREST APIをテストして動作していることを確認しましょう。
これには、WordPressのサイトヘルス機能を使用します。WordPress管理画面で「ツール」>「サイトヘルス」に移動します。
「ステータス」タブには、インストールに関する既存の問題が一覧表示されます。REST API がブロックされている場合は、以下のメッセージが表示されます。
REST APIで予測しない結果が発生しました
REST API は WordPress や他のアプリケーションがサーバーと通信する手段の1つです。たとえばブロックエディター画面は、投稿や固定ページの表示や保存に REST API を使用しています
サイトヘルス機能は、「予期しない結果」を生み出している特定のエラーも表示され、これには「HTTP 401 Unauthorized」、操作のタイムアウト、「403 Cookie Nonce Is Invalid」などが挙げられます。
このエラーを解決してREST APIを再び使用できるようにする方法は、このセクションに記載されているエラーによって若干異なります。
2. エラーを解決してREST APIを再度有効にする
サイトヘルス機能は、WordPressサイトでREST APIを再度有効にする方法に関する情報を提供してくれることがあります。一般的な解決方法には、以下のようなものがあります。
- CloudflareがREST APIをブロックしていないかを確認する:Cloudflareを利用している場合、ファイアウォールが正当なリクエストを誤ってブロックしている可能性があります。ルールセットを確認してREST APIがブロックされているかどうかを判断し、必要に応じてルールを無効にして通過させます。
- プラグインがREST APIをブロックまたは無効にしていないかを確認する:プラグインがREST APIをブロックしていることも考えられます。プラグインを1つずつ無効にして、原因となっているプラグインを特定し、そのプラグインを削除または設定を変更することで、REST APIを再度有効にすることができます。セキュリティとパフォーマンスの最適化プラグインでこの問題がよく見られます。
- WordPressサイトを認証できるように.htaccessファイルを編集する: REST APIは、接続前にウェブサイトを認証しなければなりません。サイトが認証されていない場合、.htaccessファイルに簡単な変更を加えて解決可能です。
- エラーがサーバーに関係しているかどうかを判断する:WindowsサーバーでWordPressを実行している場合もこのエラーが発生することが明らかになっています。この場合は、web.configファイルを編集することになります。
プラグインやファイアウォールアプリケーションが原因であることが最も一般的であるため、まずはいずれかをチェックすることから始めるのが効率的です。
「公開に失敗しました」エラーの原因となっているツールを見つけて無効化するか、設定を変更することで問題を解決できる可能性があります。
3. エラー特定のためにデバッグモードを有効にする
上記解決策のいずれかを実行しても、REST APIを有効にできない場合には、WordPressのデバッグモードをオンにしましょう。この機能は、トラブルシューティングツールとして一時的に使用することができます。
デバッグモードを有効にすると、すべてのPHPレスポンスがサイトのwp-contentディレクトリのdebug.logファイルに記録されます。このファイルを検索することで、WordPressがREST APIに接続できず、記事の公開や更新を妨げているエラーを見つけることができます。
デバッグモードを有効にするには、wp-config.phpファイルの「/* That’s all, stop editing! Happy blogging. */」の直前に以下を貼り付けます。
// WP_DEBUGモードを有効にする
define( 'WP_DEBUG', true );
// /wp-content/debug.logファイルへのデバッグログを有効にする
define( 'WP_DEBUG_LOG', true );
エラーの解決後は必ず上記コードをwp-config.phpから削除してください。
なお、Kinstaをご利用の場合は、MyKinstaでエラーログにアクセス可能です。
MyKinstaにログインして「WordPressサイト」を開き、エラーが発生しているサイトをクリックします。左サイドメニューから「ログ」を開き、ドロップダウンメニューから「error.log」を選択してください。
すると、WordPressサイトで現在発生しているエラーが一覧表示されます。
4. 一時的な解決策としてClassic Editorプラグインを使用する
ここまでトラブルシューティングを行ってもエラーを解決できない場合は、以下のいずれの方法でサポートを求める必要があります。
- 問題がサーバーに関連していると思われる場合、または利用しているホスティング会社がWordPressのサポートを提供している場合、ホスティング会社に連絡する。
- サイトに不可欠なツールがREST APIをブロックしていることがわかり、自分で問題を解決できない場合、特定のプラグインまたは Cloudflareなどのファイアウォールアプリケーションの提供元に連絡する。
- ユーザーサポートのない無料プラグインなど、さらなるヘルプが必要な場合、WordPressのサポートフォーラムを利用する。
いずれかの方法でエラーの解決を行う間は、一時的な回避策としてClassic Editorプラグインをインストールすることができます。
TinyMCEエディタでは投稿の公開や更新にREST APIを使用することがないため、コンテンツに必要な変更を加えることができます。
ただし、これは根本的なエラーの解決にはならないため、一時的な応急処置として使用してください。
まとめ
WordPressサイトのコンテンツを公開または更新できないのは、深刻な問題になり得ます。幸いこのエラーの原因は予測しやすく、トラブルシューティングを行って比較的すぐに正常な状態に戻すことができます。
WordPressブロックエディターで「更新に失敗しました」または「公開に失敗しました」というエラーが表示されたら、以下の順にトラブルシューティングを行ってください。
- REST APIがブロックされているかどうかを確認する
- エラーを解決してREST APIを再度有効にする
- デバッグモードを有効にしてエラーを特定する
- 一時的な解決策として、Classic Editorプラグインを使用する