چرا اجرای خودکار وردپرس دیر انجام می‌شود و چطور درستش کنیم

وردپرس کرون سیستم ندارد و به بازدید وابسته است. راهنمای تنظیم کرون سرور برای فروشگاه‌های کم‌بازدید که کارهای زمان‌بندی‌شده باید سر وقت اجرا شوند.

تیم آکسون۳ مهر ۱۴۰۵۲ دقیقه خواندن

وردپرس کرون سیستم ندارد

چیزی که در وردپرس «کرون» نامیده می‌شود (WP-Cron) در واقع یک زمان‌بند سیستمی نیست. یک تکه کد است که با هر بازدید صفحه چک می‌کند «آیا کاری برای اجرا مانده؟». یعنی اگر سایت شما بازدید نداشته باشد، هیچ کار زمان‌بندی‌شده‌ای اجرا نمی‌شود، نه به‌روزرسانی قیمت، نه ارسال ایمیل صف‌شده و نه پاک‌سازی داده‌های موقت، هرچقدر هم که دیر شده باشد.

چرا این برای فروشگاه‌های کم‌بازدید مشکل‌ساز است

یک فروشگاه با بازدید بالا این مشکل را کمتر حس می‌کند چون تقریباً همیشه یک بازدیدکننده هست که WP-Cron را «بیدار» کند. اما فروشگاه تازه‌کار یا فروشگاه با ترافیک عمدتاً شبانه ممکن است ساعت‌ها بدون بازدید بماند، دقیقاً وقتی که کارهای زمان‌بندی‌شده (مثل بررسی قیمت رقبا یا ارسال گزارش) باید اجرا شوند.

راه‌حل: کرون سرور

راه‌حل، جایگزین کردن وابستگی به بازدید با یک زمان‌بند مستقل در سطح سرور است:

  1. در پنل هاست (cPanel یا DirectAdmin) بخش Cron Jobs را باز کنید.
  2. یک کرون جدید با تناوب هر ۱ دقیقه بسازید.
  3. آدرسی که افزونه یا سیستم مدیریت محتوایتان برای اجرای وظایف زمان‌بندی‌شده معرفی کرده را همان‌جا ثبت کنید (در پنل آکسون این آدرس در صفحهٔ تنظیمات هر افزونه آماده و قابل کپی است).
  4. در وردپرس معمولی می‌توانید WP-Cron وابسته به بازدید را با ثابت DEFINE('DISABLE_WP_CRON', true); در wp-config.php غیرفعال کنید تا فقط کرون سرور اجرا شود و کار دوباره اجرا نشود.

چطور مطمئن شوید درست کار می‌کند

بعد از ثبت کرون سرور، وضعیت زمان‌بندی را چک کنید. بیشتر ابزارها یکی از سه حالت را نشان می‌دهند: armed (زمان‌بندی‌شده و منتظر)، late (باید اجرا می‌شد ولی نشده، نشانهٔ اینکه کرون سرور درست ثبت نشده) یا next (زمان اجرای بعدی). اگر مدتی بعد از تنظیم هنوز «late» می‌بینید، آدرس کرون یا تناوب ثبت‌شده در پنل هاست را دوباره چک کنید.

یک نکتهٔ جانبی: فایروال هاست

اگر بعد از درست کردن کرون هنوز نتیجه به سایت نمی‌رسد، احتمالاً مشکل جای دیگری است: فایروال یا کپچای میزبان (BitNinja، Cloudflare، Wordfence، Imunify) درخواست تحویل نتیجه را رد می‌کند. این حالت معمولاً در لاگ عملیات با پیامی مثل «نتیجه آماده بود ولی میزبان سایت پاسخ سرور را رد کرد» دیده می‌شود. راه‌حلش لیست‌سفید کردن آی‌پی سرویس‌دهنده در تنظیمات فایروال هاست است، نه تغییر دوبارهٔ کرون.