WordPress cron çalışmıyor uyarısı; zamanlanmış yazıların yayınlanmaması, yedeklerin başlamaması, WooCommerce e-postalarının gecikmesi veya bakım görevlerinin birikmesi şeklinde kendini gösterebilir. Sorun çoğu zaman tek bir eklentiden değil, WP-Cron’un çalışma biçimi ile sunucu trafiği arasındaki uyumsuzluktan çıkar.
Rastgele eklenti kapatmak yerine önce hangi görevin geciktiğini bulun. Ardından loopback isteği, önbellek, güvenlik duvarı ve gerçek sunucu cron’u gibi katmanları sırayla kontrol edin. Aşağıdaki akış, canlı siteyi gereksiz riske atmadan teşhis yapmanıza yardımcı olur.
WP-Cron Nedir ve Neden Gecikir?
WP-Cron, Linux sunuculardaki klasik cron servisinin birebir karşılığı değildir. WordPress, çoğunlukla bir ziyaret geldiğinde zamanı dolmuş görevleri kontrol eder ve wp-cron.php dosyasına arka planda istek gönderir. Trafiği az olan sitelerde tetikleme geç kalabilir; trafiği çok yoğun sitelerde ise gereğinden fazla kontrol oluşabilir.
Zamanlanmış görevler; yazı yayınlama, WooCommerce Action Scheduler işlemleri, e-posta kuyruğu, yedekleme, önbellek temizliği ve lisans kontrolleri gibi farklı işleri çalıştırabilir. Bir görevin gecikmesi her zaman WordPress çekirdeğinin bozuk olduğu anlamına gelmez. Görevi oluşturan eklenti hata veriyor, PHP işlemi zaman aşımına uğruyor veya sunucu kendi sitesine istek gönderemiyor olabilir.
WordPress Cron Çalışmıyor Sorunu İçin 10 Kontrol
1. Belirtiyi ve geciken görevi netleştirin
Önce sorunu somutlaştırın: zamanlanmış yazı mı kaçırılıyor, yedek mi başlamıyor, sipariş e-postası mı gecikiyor? Görevin planlanan saati ile gerçekten çalıştığı saati not edin. WordPress saat dilini Ayarlar > Genel bölümünden kontrol edin; sunucunun UTC kullanması tek başına hata değildir, önemli olan WordPress saat diliminin doğru seçilmesidir.
WooCommerce sipariş e-postası hiç ulaşmıyorsa cron dışında teslimat sorunu da olabilir. Bu durumda WooCommerce e-posta gitmiyor kontrol listesini de uygulayın.
2. Site Sağlığı ekranındaki uyarıları okuyun
Araçlar > Site Sağlığı > Durum bölümünde “Zamanlanmış etkinlik gecikti” veya loopback isteğiyle ilgili bir uyarı bulunabilir. Uyarının ayrıntısını açıp olay adını kaydedin. Rastgele görünen plugin_prefix_daily_task benzeri isimler genellikle görevin hangi eklentiye ait olduğunu anlamayı kolaylaştırır.
3. WP-Cron’un kapatılmadığını doğrulayın
wp-config.php içinde DISABLE_WP_CRON sabiti true olarak ayarlanmışsa WordPress ziyaretlerle cron tetiklemez. Bu ayar, gerçek bir sunucu cron’u kurulduğunda bilinçli olarak kullanılabilir. Fakat karşılığında çalışan bir sunucu görevi yoksa bütün zamanlanmış işler bekler.
Dosyayı düzenlemeden önce yedek alın. Sabit yoksa sırf deneme amacıyla eklemeyin. Sabit varsa hosting panelindeki cron görevinin aktif ve doğru alan adına bağlı olduğunu kontrol edin.
4. Loopback ve REST API isteklerini test edin
WordPress’in kendi alan adına yaptığı isteğe loopback denir. Bakım modu, Basic Auth, güvenlik eklentisi, ModSecurity, yanlış DNS kaydı veya güvenlik duvarı bu isteği engelleyebilir. Site Sağlığı’nda loopback ya da REST API hatası görürseniz önce hata kodunu ayırın:
- 401/403: kimlik doğrulama veya güvenlik kuralı engeli olabilir.
- 404: URL, yönlendirme ya da sunucu kuralı incelenmelidir.
- 500: PHP hatası, bellek sınırı veya eklenti kaynaklı sorun olabilir.
- Zaman aşımı: DNS, güvenlik duvarı ya da uzun çalışan görev ihtimali yüksektir.
403 görüyorsanız WordPress 403 hatası çözümü rehberindeki izin ve güvenlik duvarı kontrolleri doğru devam noktasıdır.
5. Görev listesini WP-CLI ile kontrol edin
Sunucunuzda WP-CLI varsa zamanı gelmiş görevleri listeleyebilir ve kontrollü biçimde çalıştırabilirsiniz. Komutları WordPress’in kurulu olduğu dizinde, doğru sistem kullanıcısıyla çalıştırın:
wp cron event list --due-now
wp cron event run --due-nowİlk komut bekleyen olayları gösterir. İkinci komut zamanı gelmiş olayları çalıştırır. Komut hata verirse çıktıda görünen hook adı, ilgili eklentiyi ve PHP hatasını bulmanız için güçlü bir ipucudur. Canlı sitede bütün görevleri arka arkaya tekrar tekrar çalıştırmayın; e-posta, stok senkronizasyonu veya dış API çağrıları yinelenebilir.
6. Eklenti çakışmasını güvenli biçimde ayırın
Görev belirli bir eklentiye aitse önce o eklentinin güncel olup olmadığını ve hata kayıtlarını kontrol edin. Canlı mağazada tüm eklentileri bir anda kapatmayın. Staging kopyasında yalnızca ilgili eklentiyi ve bağımlılıklarını açık bırakarak test yapmak daha güvenlidir. Adım adım izolasyon için WordPress eklenti çakışması bulma rehberini kullanabilirsiniz.
Form ve üyelik kayıtlarını yoğun bot trafiği dolduruyorsa işlem kuyruğu da gereksiz yük altında kalabilir. WordPress ve WooCommerce kayıt formlarında istenmeyen denemeleri azaltmak için Bolcal Anti Spam eklentisini inceleyebilirsiniz.
7. Önbellek ve güvenlik kurallarını inceleyin
wp-cron.php isteğinin sayfa önbelleğine alınmaması gerekir. CDN, WAF veya hosting güvenliği bu adrese hız sınırı uyguluyorsa WordPress tetiklemeyi başlatamayabilir. Güvenlik katmanını tamamen kapatmak yerine önce loglarda isteğin engellenip engellenmediğini bulun; sonra yalnızca gerekli yol ve kaynak için dar kapsamlı istisna tanımlayın.
8. PHP kaynaklarını ve hata kayıtlarını kontrol edin
Uzun ürün aktarımı, yedekleme veya görsel işleme görevi PHP bellek sınırına ya da işlem süresine takılabilir. Hosting hata kayıtlarında Allowed memory size exhausted, Maximum execution time exceeded veya fatal error ifadelerini arayın. Limiti körlemesine yükseltmek yerine hangi görevin ne kadar kaynak tükettiğini belirleyin.
Hata kaydı açmanız gerekiyorsa kişisel verileri ve sipariş bilgilerini loglamayın; test sonrası ayrıntılı debug modunu kapatın. Site genelinde beyaz ekran oluşuyorsa WordPress beyaz ekran hatası adımlarına geçin.
9. Düşük trafikli sitelerde gerçek sunucu cron’u kurun
Ziyaret sayısı düzensizse WP-Cron görevleri planlanan dakikada tetiklenmeyebilir. Hosting panelinden beş dakikada bir wp-cron.php çağıran gerçek bir cron görevi daha öngörülebilir sonuç verir. Önce hosting firmanızın önerdiği komutu kullanın. Genel yapı şu şekildedir:
*/5 * * * * /usr/bin/curl -fsS 'https://alanadiniz.com/wp-cron.php?doing_wp_cron' >/dev/null 2>&1alanadiniz.com bölümünü kendi adresinizle değiştirin. Komutun gerçekten başarıyla çalıştığını hosting cron kayıtlarından doğruladıktan sonra wp-config.php dosyasına aşağıdaki sabiti ekleyerek ziyaretçi tabanlı tetiklemeyi kapatabilirsiniz:
define( 'DISABLE_WP_CRON', true );Bu kodu child theme’e veya snippet eklentisine değil, yalnızca wp-config.php dosyasında uygun konuma ekleyin. Önce dosya yedeği alın. Sunucu cron’u kurulmadan DISABLE_WP_CRON değerini açmak, sorunu düzeltmek yerine bütün görevleri durdurur.
10. Düzeltmeyi gerçek bir görevle doğrulayın
Kontrol sonrası yalnızca Site Sağlığı uyarısının kaybolmasına güvenmeyin. Beş-on dakika sonrasına bir test yazısı planlayın, ilgili eklentinin deneme görevini çalıştırın veya staging mağazada bildirim üreten bir test siparişi oluşturun. Planlanan saat, çalıştığı saat ve oluşan çıktı aynı kontrol notunda yer alsın.
WooCommerce mağazasında test siparişi kullanıyorsanız fatura alanlarının da siparişe doğru kaydedildiğini kontrol edin. Bireysel ve şirket müşterilerinden düzenli bilgi toplamak için WooCommerce Bireysel Kurumsal Fatura eklentisi kullanılabilir.
Sık Yapılan Hatalar
DISABLE_WP_CRONayarını açıp gerçek cron görevi kurmamak- Canlı sitede tüm eklentileri aynı anda devre dışı bırakmak
- Geciken bütün görevleri art arda çalıştırıp yinelenen e-posta veya API çağrısı üretmek
- 403 hatasında güvenlik sistemini tamamen kapatmak
- PHP limitlerini ölçüm yapmadan sürekli yükseltmek
- Sadece yönetim paneline bakıp gerçek zamanlanmış yayın veya sipariş akışını test etmemek
WordPress Cron Çalışmıyor Sorunu İçin Kısa Özet
WordPress cron çalışmıyor sorununda en güvenli sıra; geciken hook’u belirlemek, saat dilimini ve Site Sağlığı uyarılarını kontrol etmek, loopback engelini ayırmak, görevi WP-CLI ile test etmek ve gerekiyorsa gerçek sunucu cron’una geçmektir. Her değişikliği tek tek uygulayıp gerçek bir zamanlanmış görevle doğruladığınızda kalıcı çözümü daha hızlı bulursunuz.
Sitenizin teknik yapısı, hız ayarları ve mobil deneyimi birlikte ele alınmalıysa web tasarım paketlerini inceleyebilirsiniz. Kuruluma özel destek için iletişim sayfasından ulaşabilir, yeni uygulamalı rehberler için WordPress ve WooCommerce blogunu takip edebilirsiniz.