WordPressのContact Form 7で送信時に回転アイコンが出たまま止まってしまうときのチェックリスト

この記事の要約
「送信」クリック時に、コンソールを確認して同じエラーが出ている場合は、下記4つをチェックする。
Failed to load resource: the server responded with a status of 500 (Internal Server Error)
- Contact Form 7の設定が間違っていないか確認
- REST APIが無効化されていないか確認
- WordPressテーマをデフォルトのテーマに変えて確認
- プラグインを1つずつ無効化にして確認
WordPressプラグインのContact Form 7を使ってフォーム実装をしていると、送信時に回転アイコンが出たまま止まってしまうことがあります。
コンソールログを見ると、「送信」ボタンをクリックしたタイミングで下記のエラーが出ていました。
Failed to load resource: the server responded with a status of 500 (Internal Server Error)このエラーの原因は複数あるみたいなので、今回はチェックする項目をまとめておきます。
1. Contact Form 7の設定が間違っていないか確認
まずはContact Form 7の記述が間違っていないか確認します。
特に「送信先」「送信元」の2箇所を重点的にチェックして、余計な文字列が入っていないか、エラーになっていないか確認します。
2. REST APIが無効化されていないか確認
Contact Form 7のバージョン4.8以降は、WordPressのREST APIという機能を使って処理をしている部分があるようです。
このREST APIを使うと、外部からWordPressの記事一覧情報を取得したりできるので、便利な反面、それがイヤな場合は無効化しているサイトもあります。
ただ、Contact Form 7ではこのREST APIを使って処理している部分があるので、無効化されているとエラーが出て処理が途中で止まってしまいます。
REST APIが有効か無効か確認する方法は、サイトURLの後ろに「/wp-json/」を付けてアクセスします。
(当サイトの場合は「http://webrandum.net/wp-json」となる)
これで大量の文字列が出てきたら有効、下記のような文字列しか表示されない場合は無効になっています。
{"code":"disabled","message":"REST API is disabled.","data":{"status":401}}無効化されているREST APIを有効に戻す場合は、テーマフォルダのfunctions.phpを開いて、下記のコードがないか確認し、適用している部分をコメントアウトします(必ずバックアップを取ってから作業しましょう)。
return new WP_Error( 'disabled', __( 'REST API is disabled.' ), array( 'status' => rest_authorization_required_code()));設定できたあとは、またサイトURLの後ろに「/wp-json/」を付けてアクセスして確認します。
ちなみに、REST APIについてもう少し気になる方は、過去に記事にしているのでこちらもご覧ください。
3. WordPressテーマをデフォルトのテーマに変えて確認
なにかテーマに記述されているコードが原因の場合もあるので、一度WordPressテーマをデフォルトのものに変えて確認します。
もしデフォルトテーマだと正常に動作する場合は、テーマに余計なコードが書かれていそうです。
特にfunctions.phpを中心に、怪しそうな記述がないか確認していきます。
(テーマでjQueryを読み込まないように設定してしまっている場合もエラーが出ますが、その場合はコンソールで別のエラーメッセージが出ます)
4. プラグインを1つずつ無効化にして確認
プラグインが干渉してしまって、正常に動作していない可能性もあります。
1度Contact Form 7以外のプラグインを無効化してしまって、再度試します。
それで正常に動作するようになったら、どのプラグインが原因なのかを1つずつ有効化と動作確認を繰り返して突き止めます。
原因のプラグインが見つかったら、下記2つの選択肢があります。
- 原因となるプラグインは使わないようにして諦める
- 原因となるプラグインの別バージョンを試してみる
Contact Form 7と、原因のプラグインのバージョンの相性が悪い可能性もあるので、別バージョンを試してみるのはやる価値があります。
(アップグレードは問題ないですが、ダウングレードさせるのはセキュリティ的にもよくないですし、いつかはアップデートしないといけないので根本的な解決にはならないので注意が必要です)
別バージョンを試す場合は「WP Rollback」というプラグインを使うと、プラグイン一覧画面から簡単にバージョン変更ができます。


Visual Studio Codeとスニペット・ドキュメント検索アプリの「Dash」連携を行うプラグイン
Google Chromeでinput要素の補完機能を使うと背景に色がついてしまう問題
SafariのURLメニュー部分も考慮できるCSSの単位「dvh」
CodeAnywhereでターミナルに触る練習をする
Visual Studio Codeの「Debugger for Chrome」でJavaScriptのデバッグを行う
Visual Studio CodeでDart Sassのコンパイルができる拡張機能「DartJS Sass Compiler and Sass Watcher」
Vue CLIで共通のSCSSファイルを読み込む方法
アイコンフォントをPCにインストールしている場合は、コーディング後の確認に注意
JavaScriptで日付をコピーして計算すると、コピー元の日付も変わってしまう場合の対処法
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
chezmoi(シェモア)で始めるdotfiles管理
GitHubの通知を見逃さない!通知に特化したアプリ「Gitify」
Keyboard Maestroの変数基礎
Neovimを使い始める最初の一歩として便利な「LazyVim」
ウェブサイトをmacOSアプリとしてラッピングする「Unite Pro」
Keyboard Maestroの「Macro Debugger」で複雑なマクロのデバッグを行う方法
無料版でも高機能なランチャーアプリ「Raycast」の基本機能と環境設定
OnyXでターミナルを使わずにmacOSの詳細設定を行う
軽量で高速なターミナルエミュレーター「Ghostty」の設定方法
Eagleで実現するクリエイティブ素材の簡単管理