WordPress wp-cron Sorunları ve Çözüm Rehberi

WordPress wp-cron sorunları, devre dışı bırakma, sistem cron job kurulumu kapak görseli

Özet: wp-cron Neden Önemli?

WordPress, planlanmış görevleri (zamanlanmış yayın, yedekleme planı, eklenti güncellemeleri, e-posta gönderimi, geçici dosya temizliği, WooCommerce sipariş durumu kontrolleri, abonelik yenilemeleri) wp-cron adı verilen kendi içindeki bir zamanlayıcıyla yürütür. Bu zamanlayıcı sunucunun sistem cron’undan farklı çalışır: wp-cron.php dosyası yalnızca siteye bir ziyaretçi geldiğinde tetiklenir. Trafiği düşük sitelerde görevler gecikir, çok trafikli sitelerde ise her istekte tetiklenerek CPU yükü oluşturur. Bu rehberde wp-cron’un nasıl çalıştığını, en sık karşılaşılan sorunları, DISABLE_WP_CRON sabitiyle wp-cron’u devre dışı bırakıp gerçek bir sistem cron job’a nasıl geçeceğinizi adım adım göstereceğiz. cPanel, Plesk, doğrudan SSH crontab ve WP-CLI üzerinden farklı kurulum senaryolarını ele alacak; ayrıca WooCommerce gibi yoğun eklentilerde sık yaşanan gecikme problemlerinin nasıl giderileceğini anlatacağız.

wp-cron Nedir?

WordPress çekirdeği, görev zamanlamak için sunucunun gerçek cron servisine güvenmez. Bunun yerine kök dizinde yer alan wp-cron.php dosyasını çağırır. Bu dosya her sayfa isteğinde, yani wp-load.php yüklendiğinde, sırada bekleyen görevleri kontrol eder ve zamanı gelmiş olanları çalıştırır. Bu yaklaşıma sahte cron (pseudo cron) denir; çünkü gerçek bir zamanlayıcı değildir, tetikleyicidir.

Avantajı, paylaşımlı hosting paketleri dahil her ortamda ek kurulum gerektirmeden çalışmasıdır. Dezavantajı ise iki yönlüdür: trafik yoksa görev çalışmaz, trafik çoksa görev her seferinde fazladan kontrol edilir. Bu sebeple bakım açısından wp-cron, hem performans hem de güvenilirlik açısından yönetilmesi gereken bir bileşendir.

wp-cron’un Tetiklenme Akışı

Bir kullanıcı sitenize bir HTTP isteği gönderdiğinde, WordPress ön yüklemesi sırasında wp_cron() fonksiyonu çağrılır. Bu fonksiyon arka planda eş zamansız bir HTTP isteğiyle https://siteniz.com/wp-cron.php?doing_wp_cron=... adresine talep yapar. Talep işlenir, kuyrukta bekleyen görevler döndürülür ve zamanı gelenler çalıştırılır. Tüm bu süreç, kullanıcının asıl gördüğü sayfa cevabıyla aynı işçi (worker) içinde değil, ayrı bir istek olarak gerçekleştirilmeye çalışılır. Bununla birlikte bazı sunucu yapılandırmalarında PHP-FPM’in fastcgi_finish_request desteği eksikse, kullanıcı sayfa yüklenirken cron işlerini bekler. Bu durum görünür yavaşlığa neden olur.

Hangi Görevler wp-cron Üzerinden Çalışır?

Çekirdeğin yerleşik olarak zamanladığı görevler arasında WordPress, tema ve eklenti güncelleme kontrolleri (wp_version_check, wp_update_plugins, wp_update_themes), geçici site verilerinin temizliği (delete_expired_transients), site sağlığı testleri (wp_https_detection, wp_site_health_scheduled_check), yorum kontrolleri ve gönderi zamanlamaları (publish_future_post) yer alır. Eklenti tarafında ise WooCommerce sipariş geçişleri (woocommerce_cancel_unpaid_orders), yedekleme eklentilerinin gece yedek alma görevleri, Yoast SEO’nun XML sitemap üretimi, Akismet’in yorum kuyruğu işlemesi gibi yüzlerce eklenti görevi wp-cron üzerinden gerçekleşir.

Sorunu Doğru Teşhis Etmek: wp-cron Kaynaklı Belirtiler

wp-cron problemleri kendini doğrudan göstermez; başka belirtiler üzerinden fark edilir. En sık görülen senaryoları şu şekilde sıralayabiliriz.

1. Zamanlanmış Yayınlar Yayınlanmıyor

Gönderiyi gelecek tarihe ayarladınız fakat saat geldiğinde yayınlanmadı; durum “Missed schedule” olarak görünüyor. Bu klasik bir wp-cron sorunudur: site uzun süre ziyaretçi almadığı için publish_future_post görevi tetiklenememiştir.

2. Yedekleme Eklentisi Çalışmıyor

UpdraftPlus, BlogVault veya BackWPup gibi araçları gece 03:00 için programladınız fakat sabah baktığınızda yedek alınmamış. Bu da aynı nedenden kaynaklanır; gece sitede yeterli trafik olmadığı için yedekleme görevi tetiklenmemiştir.

3. Site Beklenmedik Şekilde Yavaş

Yüksek trafikli sitelerde her istek wp_cron() tarafından kontrol edilir. Eğer kuyrukta yüzlerce gecikmiş görev birikmişse, sunucu her ziyaretçide bu kuyruğu tarayıp çalıştırmaya başlar. Sonuç: CPU yükü artar, TTFB (Time To First Byte) artar, hosting sağlayıcısı uyarı mailleri gönderir.

4. WooCommerce Sipariş Akışında Tutarsızlık

Ödenmemiş siparişler otomatik iptal edilmiyor, abonelik yenilemeleri gecikiyor, e-posta tetikleyicileri geç ulaşıyor. Bu davranışların ardında çoğunlukla tıkanmış bir wp-cron kuyruğu vardır.

5. Sunucu Hata Loglarında wp-cron.php Hataları

Sunucu loglarında “Maximum execution time” veya “Memory exhausted” gibi hatalar görmek; bunların wp-cron.php üzerinde çalışırken oluşması yine bir cron tıkanıklığını işaret eder.

Mevcut wp-cron Durumunu Anlamak

Yapılandırmaya geçmeden önce sitenizin mevcut cron kuyruğunu görüntülemek, hangi görevlerin geciktiğini ve hangilerinin gereksiz tekrar ettiğini anlamak açısından kritiktir.

WP-CLI ile Hızlı Tanı

SSH erişiminiz varsa, WordPress dizininde aşağıdaki komutlarla kuyruğu listeleyebilirsiniz.

# Tüm zamanlanmış olayları görüntüle
wp cron event list --fields=hook,next_run,recurrence

# Yalnızca gecikmiş olayları filtrele
wp cron event list --fields=hook,next_run_relative | grep -i ago

# wp-cron'un çalışıp çalışmadığını doğrula
wp cron test

# Belirli bir görevi anında çalıştır
wp cron event run wp_version_check

wp cron test komutu sitenin kendi kendine wp-cron.php‘ye HTTP isteği yapabildiğini doğrular. “Success” çıktısı alıyorsanız sahte cron mekanizması sağlıklı çalışıyor demektir. “Could not spawn cron” çıktısı alıyorsanız, sunucu kendi domain’ine HTTP isteği yapamıyor (loopback sorunu) ya da bir güvenlik duvarı yolu kapatıyordur.

WP Crontrol Eklentisiyle Görsel Tanı

SSH’iniz yoksa, “WP Crontrol” ücretsiz eklentisi cron kuyruğunu yönetici panelinden listeler. Araçlar → Cron Events ekranında her görevin sonraki çalışma zamanı, tekrar aralığı ve kanca (hook) adı görünür. Geciktiği halde çalışmamış görevler “Now” veya geçmiş tarihle işaretlenir; bu kayıtlar sorunlu kuyruğu hızla bulmanızı sağlar.

Çözüm Yaklaşımı: wp-cron’u Devre Dışı Bırakıp Gerçek Cron Job Kullanmak

Performans açısından önerilen yaklaşım, varsayılan sahte cron mekanizmasını kapatmak ve onun yerine sunucunun gerçek cron servisine düzenli aralıklarla wp-cron.php çağırmasını söylemektir. Böylece görevler trafikten bağımsız olarak her dakika, beş dakikada bir veya saatlik olarak çalışır; her ziyaretçi de fazladan kontrol yükü taşımaz.

Adım 1: wp-config.php İçinde DISABLE_WP_CRON Sabitini Ekleme

FTP, dosya yöneticisi veya SSH ile sitenizin kök dizinine erişin. wp-config.php dosyasını yedekleyin, sonra düzenleyin. /* That's all, stop editing! */ satırından önce şu satırı ekleyin:

define( 'DISABLE_WP_CRON', true );

Bu sabit, WordPress’in her sayfa isteğinde wp-cron’u tetiklemesini durdurur. Eklemeden hemen sonra siteyi yenileyip ön yüzde herhangi bir hata olup olmadığını kontrol edin. Bir sorun çıkarsa satırı kaldırın ve dosyayı orijinal haline döndürün.

Adım 2: Loopback Engellerini Aşmak İçin Alternatif Sabit

Bazı sunucularda WordPress kendi domain’ine HTTP isteği yapamaz (DNS çözümleme, güvenlik duvarı veya CDN problemleri). Bu durumda ALTERNATE_WP_CRON sabiti yardımcı olabilir. Bu sabit, cron tetiklemesini yönlendirme tabanlı bir yaklaşımla çalıştırır.

define( 'ALTERNATE_WP_CRON', true );

Önemli: Gerçek bir sistem cron job kuracaksanız bu sabite ihtiyacınız yoktur. ALTERNATE_WP_CRON yalnızca sistem cron kurmayacaksanız ve loopback problemi yaşıyorsanız geçici çözüm olarak kullanılır.

Adım 3: cPanel Üzerinden Sistem Cron Job Tanımlamak

cPanel kullanıcıları için adımlar aşağıdaki gibidir. Bu yapılandırma, sunucunuzun her 5 dakikada bir wp-cron.php‘yi çalıştırmasını sağlar.

  1. cPanel’e giriş yapın ve Advanced bölümünde Cron Jobs‘a tıklayın.
  2. Email alanına hata bildirimleri için bir e-posta adresi girin (opsiyonel).
  3. Common Settings menüsünden “Every 5 minutes” seçin. Alternatif olarak alanları manuel doldurun: dakika alanına */5, kalan tüm alanlara *.
  4. Command alanına aşağıdakilerden birini yapıştırın (sitenin gerçek yolunu kullanın):
# wget tabanlı, çıktıyı atar
wget -q -O - https://siteniz.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

# curl tabanlı alternatif
curl -s https://siteniz.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

# PHP CLI ile doğrudan dosya yürütme (daha güvenli, HTTP üzerinden geçmez)
/usr/local/bin/php /home/kullaniciadi/public_html/wp-cron.php >/dev/null 2>&1

Komutun ardından Add New Cron Job‘a tıklayın. Bir kaç dakika içinde “Current Cron Jobs” listesinde göründüğünü doğrulayın.

Adım 4: Plesk Üzerinden Sistem Cron Job Tanımlamak

Plesk panel kullanıyorsanız sürecin mantığı aynıdır, arayüz farklıdır.

  1. İlgili abonelik panelinde Scheduled Tasks‘a girin.
  2. Add Task‘a tıklayın, görev tipi olarak Run a command seçin.
  3. Komuta sitenin gerçek yolunu kullanarak şunu girin: /usr/bin/php8.2 /var/www/vhosts/siteniz.com/httpdocs/wp-cron.php. PHP yolu sürüme göre değişebilir; Plesk’in PHP Settings bölümünde aktif yol görünür.
  4. Tekrarlama aralığını “Cron style” sekmesinde */5 * * * * olarak ayarlayın.
  5. Bildirimleri için “Notify” alanını isteğe bağlı doldurun ve kaydedin.

Adım 5: Doğrudan SSH crontab ile Yapılandırma

Bir VPS veya yönetimli sunucu kullanıyorsanız crontab editörünü aşağıdaki komutla açabilirsiniz.

crontab -e

Açılan dosyada yeni bir satır ekleyin. Aşağıdaki örnek her 5 dakikada bir WP-CLI ile cron sırasını çalıştırır; bu yöntem HTTP istemcisine bağımlı olmadığı için en sağlamıdır.

*/5 * * * * cd /var/www/siteniz.com && /usr/local/bin/wp cron event run --due-now >/dev/null 2>&1

Dosyayı kaydedip çıktığınızda crontab değişikliği aktif olur. Kontrol etmek için crontab -l komutunu çalıştırın.

Adım 6: Doğrulama

Yapılandırma tamamlandıktan birkaç dakika sonra şu kontrolleri yapın.

# Cron'un çalışıp çalışmadığını doğrula
wp cron test
wp cron event list --fields=hook,next_run_relative

# Sunucu log'unu izle (sistem cron çağrıları görünmeli)
tail -f /var/log/cron        # CentOS/RHEL
tail -f /var/log/syslog | grep CRON   # Debian/Ubuntu

WP Crontrol kullanıyorsanız aynı ekrana dönerek geçen 5–10 dakikada görevlerin “next_run” sütunlarının ilerlediğini gözlemleyin. İlerleme yoksa cron komutu yanlış yola işaret ediyor olabilir; yolu, PHP sürümünü ve dosya izinlerini gözden geçirin.

İleri Düzey Yapılandırma: WP-CLI ile Tam Kontrol

WP-CLI, wp-cron yönetimi için en güçlü ve şeffaf araçtır. SSH erişimi olan her sitede kurulu olmalıdır.

WP-CLI Kurulumu

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
wp --info

WP-CLI ile Yaygın Komutlar

# Sıradaki tüm cron olaylarını listele
wp cron event list

# Şu an çalışması gereken tüm görevleri elle yürüt
wp cron event run --due-now

# Belirli bir görevi tek başına çalıştır
wp cron event run woocommerce_cleanup_sessions

# Bir görevi sıradan tamamen sil
wp cron event delete delete_expired_transients

# Tüm cron sıralarını sıfırla (dikkatli kullanın)
wp cron event delete --all

# Tekrar aralıklarını listele
wp cron schedule list

Özel Tekrar Aralığı Eklemek

Bir eklentinin görevini saatlik yerine 15 dakikalık aralıklarla çalıştırmak isteyebilirsiniz. Bunu yapmak için child temanızın functions.php dosyasına aşağıdaki kodu ekleyin.

add_filter( 'cron_schedules', function ( $schedules ) {
    $schedules['every_fifteen_minutes'] = array(
        'interval' => 15 * MINUTE_IN_SECONDS,
        'display'  => __( 'Her 15 dakikada bir', 'wpneta' ),
    );
    return $schedules;
} );

Ardından mevcut bir hook’u bu yeni aralığa yeniden zamanlamak isterseniz:

wp cron event delete ornek_hook_adi
wp cron event schedule ornek_hook_adi now every_fifteen_minutes

Performans Etkisi: wp-cron Tıkanıklığını Önlemek

Sistem cron’a geçtikten sonra dahi kuyrukta birikmiş gecikmeli görevler performansı etkileyebilir. Düzenli bakım için aşağıdaki disiplini önerilir.

Gereksiz Eklenti Görevlerini Temizleme

Kaldırdığınız eklentilerin bazıları cron kayıtlarını arkalarında bırakır. WP Crontrol veya WP-CLI ile kullanılmayan hook’ları görüp silmek, kuyruğun şişmesini engeller.

# Hangi eklenti tarafından kaydedilmiş olduğu belirsiz hook'ları sırala
wp cron event list --fields=hook --format=csv | sort | uniq -c | sort -rn

# Spesifik bir görevi tamamen sil
wp cron event delete eski_eklenti_temizlik_hook

Loopback Sorunlarını Önlemek

Sunucu kendi domain’ine HTTP isteği yaparken bağlantı kuramıyorsa wp-cron tetiklenmez. Aşağıdaki kontrolleri yapın.

# Sunucudan kendine HTTP istek atabiliyor mu?
curl -I https://siteniz.com/wp-cron.php

# DNS çözümlemesi ne döndürüyor?
dig +short siteniz.com

# /etc/hosts dosyasına yerel çözümleme ekleyerek loopback'i hızlandırma
echo "127.0.0.1 siteniz.com" | sudo tee -a /etc/hosts

Yedekleme Eklentileri İçin Tavsiyeler

UpdraftPlus, BlogVault, Solid Backups gibi yedekleme eklentileri yoğun cron tüketicileridir. Sistem cron job tarafından yeterli sıklıkta tetiklendiğinizden emin olun. WooCommerce siteleri için 5 dakikalık aralık ideal; düşük trafikli bloglarda 10 veya 15 dakika yeterlidir.

Çoklu Site (Multisite) Senaryosu

WordPress Multisite ağlarında her alt site kendi cron kuyruğuna sahiptir. wp-cron.php bir ağ isteği üzerinden tetiklendiğinde yalnızca o alt sitenin görevleri çalışır. Sistem cron job kurarken her alt site için ayrı bir komut tanımlamak veya WP-CLI ile --url parametresini kullanmak gerekir.

# Ağdaki tüm siteler için sırayla cron yürütme
for site in $(wp site list --field=url --format=csv); do
  wp cron event run --due-now --url=$site
done

Bu komutu bir bash betiğine kaydedip crontab’a 5 dakikalık aralıkla eklemek, ağdaki tüm sitelerin görevlerinin düzenli çalışmasını sağlar.

Güvenlik Notları: wp-cron.php’ye Dışarıdan Erişim

Sahte cron mekanizması varsayılan olarak wp-cron.php dosyasını dışarıdan tetiklemeye açık tutar. Bu durum bazen yetkisiz kişilerin dosyayı binlerce kez çağırarak DoS benzeri yük oluşturmasına yol açar. DISABLE_WP_CRON aktif olsa bile, sunucu cron’unun bu dosyayı doğrudan PHP CLI ile çağırması güvenlik açısından tavsiye edilir; çünkü HTTP üzerinden çağrı, herkesin erişebileceği bir adresi tetiklemeye devam eder.

Erişimi sınırlamak için .htaccess üzerinden basit bir kısıtlama uygulanabilir. Apache sunucularda kök dizindeki .htaccess dosyasına şu satırları ekleyin:

<Files wp-cron.php>
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
</Files>

Nginx için ilgili site bloğuna şu kuralı ekleyin:

location = /wp-cron.php {
    deny all;
    return 403;
}

Bu kurallar etkinleştirildikten sonra dışarıdan wp-cron.php çağrılamaz; ancak sistem cron job PHP CLI ile çağrı yaptığı için iç işleyiş etkilenmez. HTTP üzerinden çağrı yapan bir cron servisi (wget/curl tabanlı) kullanıyorsanız bu kuralı uygulamayın; aksi takdirde planlı görevler hiç tetiklenmez.

Sorun Giderme Kontrol Listesi

Yapılandırmadan sonra hâlâ sorun yaşıyorsanız aşağıdaki kontrol listesi sırasını izleyin. Her adım sonrası WP Crontrol veya wp cron event list ile durum değişikliğini gözleyin.

  • Yazma yetkisi: wp-config.php dosyasına yapılan değişiklikler kaydedildi mi? Dosya izinleri 644 olmalı; çekirdek dosyalar için 600 önerilir.
  • Doğru yol: cPanel/Plesk komutunda wp-cron.php yolu siteniz için doğru mu? Sembolik bağlantılı kurulumlarda fiziksel yolu kullanın.
  • PHP CLI sürümü: Sunucuda birden fazla PHP sürümü varsa /usr/local/bin/php dışında /usr/local/bin/ea-php82 gibi sürüm spesifik yolların hedeflendiğinden emin olun.
  • Sunucu loglarında “cron” kayıtları görünüyor mu? Görünmüyorsa cron servisinin çalıştığını systemctl status cron ile doğrulayın.
  • Site bakım modunda mı? .maintenance dosyası kalıntısı cron tetiklemesini durdurur; silmek sorunu çözer.
  • Loopback engellenmiş mi? Güvenlik duvarı, Cloudflare veya WAF kuralları sunucunun kendine HTTP isteği yapmasını engelliyor olabilir; ALTERNATE_WP_CRON veya doğrudan PHP CLI çağrısı çözümdür.
  • Bellek sınırı yeterli mi? Cron işlerinin tamamlanabilmesi için WP_MEMORY_LIMIT en az 256M olmalıdır.
  • Yürütme süresi: PHP-FPM havuzunda request_terminate_timeout değeri yedekleme gibi uzun süreli işler için yeterli mi?
  • Eklenti çatışması: Yeni yüklenen güvenlik eklentisi wp-cron.php isteklerini engelleyebilir; Wordfence, Sucuri kurallarını ve “WP-Cron URI” istisnasını kontrol edin.

İzleme ve Uyarı: Üretim Sitelerinde Cron Sağlığı

Kritik siteler için cron yapılandırmasını kurmak yeterli değildir; sürekli izlenmesi gerekir. Üç yaklaşım yaygındır.

1. Healthchecks veya Cronitor Servisleri

Bu servisler size benzersiz bir URL verir; cron komutunuza curl healthchecks.io/.../ping eklediğinizde, her başarılı çalıştırma kayıt altına alınır. Belirlediğiniz aralıkta ping gelmezse e-posta veya Slack uyarısı alırsınız.

*/5 * * * * cd /var/www/siteniz.com && /usr/local/bin/wp cron event run --due-now && curl -fsS --retry 3 https://hc-ping.com/UUID >/dev/null

2. Sunucu Log Anomali Tespiti

Cron çalıştırma süreleri normalin üstüne çıkmaya başladıysa bunun bir uyarı olduğunu bilin. Basit bir time sarmalayıcı çalıştırma süresini ölçer ve aşırı yavaşlıkları görmeyi sağlar.

*/5 * * * * /usr/bin/time -o /var/log/wpcron-time.log -a /usr/local/bin/wp cron event run --due-now --path=/var/www/siteniz.com

3. Site Sağlığı Ekranı

WordPress yönetici panelindeki Araçlar → Site Sağlığı ekranı, loopback hataları ve cron problemleri için kendi içinde uyarı verir. Bu ekranı haftada bir kontrol etmek, küçük problemleri büyümeden yakalamak için yeterlidir.

SSS — Sıkça Sorulan Sorular

wp-cron’u tamamen kaldırmak güvenli mi?

Sahte cron’u devre dışı bırakmak (DISABLE_WP_CRON true) güvenlidir; ancak bunun yerine mutlaka gerçek sistem cron job kurmalısınız. Aksi takdirde planlı yayınlar, yedekler ve bakım görevleri çalışmaz.

Sistem cron’unu hangi sıklıkta çalıştırmalıyım?

Çoğu site için 5 dakika ideal denge sunar. WooCommerce ve yüksek trafikli üyelik siteleri için 1 dakika tercih edilebilir; düşük trafikli kişisel bloglar için 10–15 dakika yeterlidir.

cPanel’de “wget komutu bulunamadı” hatası alıyorum, ne yapmalıyım?

Bazı paylaşımlı hosting paketlerinde wget kısıtlıdır. Yerine curl veya doğrudan PHP CLI çağrısı kullanın. PHP CLI çağrısı her zaman en güvenilir seçenektir çünkü HTTP katmanına bağlı değildir.

WP-CLI kullanmadan cron job kurabilir miyim?

Evet, HTTP tabanlı komutlar (wget veya curl ile wp-cron.php çağırma) WP-CLI gerektirmez. WP-CLI yalnızca daha hassas kontrol istediğinizde gereklidir; ileri düzey yapılandırma ve sorun giderme için kuvvetle tavsiye edilir.

Cloudflare arkasında wp-cron çalışmıyor; ne yapmalıyım?

Sunucu loopback isteğini Cloudflare üzerinden döndürdüğünde gecikme veya engelleme yaşanabilir. Çözüm, sistem cron’unu PHP CLI ile çalıştırmak veya /etc/hosts dosyasına 127.0.0.1 siteniz.com kaydı ekleyerek HTTP istemcisini doğrudan kendi sunucusuna yönlendirmektir.

WP Crontrol “Could not spawn cron” uyarısı veriyor, sorun nedir?

Bu uyarı sahte cron mekanizmasının kendi kendine HTTP isteği yapamadığını gösterir. Eğer sistem cron’una geçtiyseniz bu uyarı zararsızdır ve göz ardı edilebilir. Sistem cron kurmadıysanız, loopback sorununu çözmelisiniz.

Site bakımdayken cron çalışır mı?

Hayır. Kök dizindeki .maintenance dosyası var olduğu sürece tüm istekler bakım sayfasına yönlendirilir ve cron tetiklenmez. Güncelleme sonrası bu dosyanın silindiğinden emin olun.

Bakım Disiplini: Aylık wp-cron Sağlık Kontrolü

Sürdürülebilir bir WordPress operasyonu için ayda bir aşağıdaki kontrol setini uygulamayı önerilir.

  • WP-CLI veya WP Crontrol ile gecikmiş görev sayısını ölç; 5’ten fazla ise araştır.
  • Cron komutunun sunucu loglarında düzenli olarak göründüğünü doğrula.
  • Yedek alma görevinin son 30 günde kaç kez başarılı olduğunu yedekleme eklentisi raporundan oku.
  • Site sağlığı ekranındaki loopback testinin “Pass” olduğunu doğrula.
  • Kullanılmayan eklenti hook’larını temizle.
  • WordPress, tema ve eklenti güncellemelerinin son 7 gün içinde uygulanmış olduğunu kontrol et.
  • PHP sürümü ve bellek limitinin önerilen değerlerin altında olmadığını doğrula.

Kaynaklar ve İleri Okuma

Aşağıdaki kaynaklar wp-cron mantığını daha derinlemesine anlamak, eklenti geliştiricileri için en iyi uygulamaları görmek ve sunucu yönetimi tarafında ek araçları keşfetmek isteyenler için yararlıdır.

  • WordPress Developer Handbook — Cron API başlığı: WordPress’in kendi dokümantasyonu, wp_schedule_event, wp_schedule_single_event, wp_unschedule_event fonksiyonlarını ayrıntılı anlatır.
  • WP Crontrol eklentisi (John Blackbourn) — yönetim panelinden cron sırasını listeler, hook ekleme ve silme imkanı sunar.
  • WP-CLI Handbook — Cron komutları sayfası: SSH üzerinden tüm cron yönetimi için referans kılavuzdur.
  • Healthchecks.io ve Cronitor — sistem cron uyumlu izleme servisleri, ücretsiz katmanlara sahiptir.
  • Server Documentation: Sunucu işletim sisteminin (CentOS, AlmaLinux, Ubuntu) cron servisi dokümantasyonu, cron.allow, cron.deny ve log konumları için kanonik kaynaktır.

Sonuç

wp-cron, WordPress’in çoğu bakım, güncelleme ve otomasyon görevinin omurgasını oluşturur. Varsayılan sahte cron mekanizması küçük siteler için yeterlidir; ancak yedeklemenin, zamanlanmış yayınların ve WooCommerce sipariş akışının güvenilir biçimde çalışması gerektiğinde gerçek sistem cron job kurmak şarttır. DISABLE_WP_CRON sabitiyle sahte cron’u kapatıp cPanel, Plesk veya SSH crontab üzerinden 5 dakikalık aralıkla gerçek cron çağrısı kurduğunuzda; sitenizin performansı stabilleşir, görevler trafikten bağımsız çalışır ve kuyruktaki gecikmiş işler birikmeyi keser. Bu rehberdeki adımları izleyerek wp-cron’u bir bilinmeyenden çıkarıp ölçülebilir, izlenebilir ve kontrol edilebilir bir altyapı bileşenine dönüştürebilir; bakım disiplinini düzenli sağlık kontrolleriyle pekiştirebilirsiniz.