لماذا يتوقف Contact Form 7 عن العمل في المواقع الثابتة (Static Sites)

تقوم بتصدير موقع WordPress الخاص بك إلى HTML ثابت. يتوقف نموذج الاتصال الخاص بك عن العمل. تظهر لك رسالة خطأ 404 في وحدة التحكم (console).

يحتاج Contact Form 7 إلى PHP. فهو يستخدم REST API لمعالجة البيانات. المواقع الثابتة لا تحتوي على PHP. وعدم وجود PHP يعني عدم وجود REST API.

يلوم البعض CORS. لكن ترويسة (header) CORS لن تعالج مشكلة غياب الخادم. أنت بحاجة إلى backend للتعامل مع البريد الإلكتروني.

إذا كنت تستخدم Simply Static Pro، فافحص أذونات الملفات (file permissions). فقد يتسبب فقدان ملف JS في هذا الخطأ. قم بتشغيل هذا الأمر:

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

قم بتشغيل عملية التصدير مرة أخرى.

هناك طريقتان لإصلاح ذلك:

  • إبقاء WordPress على نطاق فرعي (subdomain). استخدمه كـ API الخاص بك. أضف ترويسات CORS إلى ملف .htaccess الخاص بك.
  • استخدام خدمة نماذج ثابتة (static form service). جرب Formspree أو Netlify Forms.

كيفية استكشاف الأخطاء وإصلاحها (How to debug):

  • قم بزيارة رابط WordPress الخاص بك متبوعًا بـ /wp-json/. إذا ظهر لك خطأ 404، فهذا يعني أن الـ backend الخاص بك غير متصل.
  • افتح DevTools. قم بإرسال النموذج. ابحث عن أخطاء 404 أو CORS.
  • افحص ملف forms.json. تأكد من أن الـ endpoint يشير إلى نطاق WordPress الخاص بك.

توقف عن معالجة الأعراض فقط. قم بإصلاح البنية البرمجية (architecture) الخاصة بك.

المصدر: https://dev.to/rahul_sharma_15bd129bc69e/why-contact-form-7-breaks-on-static-sites-and-what-to-do-about-it-jg5