静的サイトで Contact Form 7 が動作しなくなる理由

WordPress サイトを静的 HTML にエクスポートすると、お問い合わせフォームが機能しなくなります。コンソールには 404 エラーが表示されます。

Contact Form 7 には PHP が必要です。このプラグインはデータを処理するために REST API を使用します。しかし、静的サイトには PHP がありません。PHP がなければ、REST API も存在しないことになります。

CORS のせいにする人もいますが、CORS ヘッダーを追加したところで、サーバーが存在しないという問題は解決しません。メールを処理するためのバックエンドが必要です。

Simply Static Pro を使用している場合は、ファイルのパーミッションを確認してください。JS ファイルが不足していることが原因でこのエラーが発生することがあります。次のコマンドを実行してください:

chmod 644 /var/www/html/wp-content/plugins/simply-static-pro/assets/ssp-form-webhook-public.js

再度エクスポートを実行します。

解決策は 2 つあります:

  • WordPress をサブドメインで運用する。それを API として利用する。.htaccess ファイルに CORS ヘッダーを追加する。
  • 静的フォームサービスを利用する。Formspree や Netlify Forms を試してみてください。

デバッグ方法:

  • WordPress の URL の末尾に /wp-json/ を付けてアクセスする。404 が表示される場合は、バックエンドがオフラインになっています。
  • デベロッパーツールを開く。フォームを送信する。404 または CORS エラーが出ていないか確認する。
  • forms.json ファイルを確認する。エンドポイントが WordPress のドメインを指していることを確認する。

対症療法ではなく、アーキテクチャを根本から修正してください。

出典: https://dev.to/rahul_sharma_15bd129bc69e/why-contact-form-7-breaks-on-static-sites-and-what-to-do-about-it-jg5