چرا Contact Form 7 در سایت‌های استاتیک از کار می‌افتد

شما سایت وردپرس خود را به HTML استاتیک خروجی می‌گیرید. فرم تماس شما از کار می‌افتد. در کنسول با خطای 404 مواجه می‌شوید.

Contact Form 7 به PHP نیاز دارد. این افزونه برای پردازش داده‌ها از یک REST API استفاده می‌کند. سایت‌های استاتیک PHP ندارند. نبود PHP به معنای نبود REST API است.

برخی افراد CORS را مقصر می‌دانند. یک هدر 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

دوباره عملیات خروجی (export) را اجرا کنید.

دو راه برای رفع این مشکل:

  • وردپرس را روی یک زیردامنه (subdomain) نگه دارید. از آن به عنوان API خود استفاده کنید. هدرهای CORS را به فایل .htaccess خود اضافه کنید.
  • از یک سرویس فرم استاتیک استفاده کنید. Formspree یا Netlify Forms را امتحان کنید.

نحوه عیب‌یابی (debug):

  • آدرس وردپرس خود را به همراه /wp-json/ باز کنید. اگر با خطای 404 مواجه شدید، بک‌اند شما آفلاین است.
  • DevTools را باز کنید. فرم خود را ارسال کنید. به دنبال خطاهای 404 یا CORS بگردید.
  • فایل forms.json خود را بررسی کنید. مطمئن شوید که endpoint به دامنه وردپرس شما اشاره می‌کند.

به جای درمان علائم، معماری خود را اصلاح کنید.

منبع: https://dev.to/rahul_sharma_15bd129bc69e/why-contact-form-7-breaks-on-static-sites-and-what-to-do-about-it-jg5