Zamanladığınız bir yazı saatinde yayımlanmadıysa, yedekleme eklentiniz gece alması gereken yedeği almadıysa ya da WooCommerce e-postaları gecikiyorsa sorunun kaynağı çoğu zaman aynı yerdir: WP-Cron. WordPress'in zamanlanmış görev sistemi, adına rağmen sunucudaki gerçek cron servisi gibi çalışmaz. Bir görevin çalışması için birinin sitenizi ziyaret etmesi gerekir.
Bu rehberde WP-Cron'un nasıl çalıştığını, düşük trafikli ve önbellekli sitelerde neden aksadığını, DISABLE_WP_CRON ile yerleşik tetikleyiciyi kapatıp cPanel'deki Cron Jobs ekranından gerçek bir zamanlanmış görev kurmayı ve WP Crontrol eklentisiyle hangi görevlerin beklediğini görmeyi adım adım anlatıyoruz. Değişikliğe başlamadan önce wp-config.php dosyanızın bir kopyasını alın.
WP-Cron nedir, nasıl çalışır?

WordPress, güncelleme kontrolü ve zamanlanmış yazıların yayımlanması gibi zamana bağlı işleri WP-Cron ile yürütür. Resmî Plugin Handbook'a göre WP-Cron her sayfa yüklemesinde zamanlanmış görev listesine bakar ve vakti gelmiş görevleri o sayfa yüklemesi sırasında çalıştırır. Sistem cron'u gibi sürekli çalışmaz; yalnızca sayfa yüklendiğinde tetiklenir.
Handbook'taki örnek durumu iyi özetler: Bir görevi 14:00'e zamanladıysanız ve sitenize 17:00'ye kadar hiç ziyaret gelmezse görev 17:00'de çalışır. Öte yandan WP-Cron, kaçan görevi unutmaz; görevler bir kuyrukta bekler ve ilk fırsatta, yani sonraki sayfa yüklemesinde çalıştırılır. Kısacası görevin ne zaman çalışacağından emin olamazsınız ama eninde sonunda çalışacağından emin olabilirsiniz.
WP-Cron sabit saatler yerine aralıklarla çalışır. WordPress'in varsayılan aralıkları hourly, twicedaily, daily ve WordPress 5.4'ten beri weekly'dir. Eklentiler kendi aralıklarını da ekleyebilir.
| Durum | Ne olur? |
|---|---|
| Yoğun trafikli site | Görevler neredeyse zamanında çalışır, ama her ziyarette ek bir kontrol yapılır. |
| Düşük trafikli site | Ziyaret gelene kadar görev bekler; zamanlanmış yazılar ve yedekler gecikir. |
| Tam sayfa önbelleği olan site | Önbellekten sunulan sayfalarda WordPress hiç çalışmayabilir; tetikleme seyrekleşir. |
| Gerçek cron kurulmuş site | Görevler sizin belirlediğiniz aralıkla, ziyaretten bağımsız tetiklenir. |
Hangi belirtiler WP-Cron sorununa işaret eder?
- Zamanlanmış yazı yayımlanmadı: Yazılar listesinde yazının yanında "Zamanlama kaçırıldı" (İngilizce arayüzde "Missed schedule") ifadesi görünür.
- Site sağlığı uyarısı:
Araçlar > Site sağlığıekranında "Bir zamanlanmış işlem gecikmiş" ya da "Bir zamanlanmış işlem yapılamadı" uyarısı çıkar. - Geri döngü hatası: Aynı ekranda "Siteniz bir geri döngü isteğini tamamlayamıyor" uyarısı. WordPress belgelerine göre geri döngü (loopback) istekleri zamanlanmış işlemleri çalıştırmak için kullanılır.
- Otomatik güncellemeler gelmiyor: Eklenti ve tema otomatik güncellemeleri de WP-Cron görevlerine dayanır.
- Eklenti yedekleri eksik: Zamanlanmış yedek almayan bir yedekleme eklentisi çoğu zaman tetiklenmeyen bir görevin sonucudur.
Adım 1: WP Crontrol ile görevleri inceleyin

Değişiklik yapmadan önce neyin beklediğini görmek iyi bir başlangıçtır. WP Crontrol eklentisi wordpress.org'da yayımlanan ücretsiz bir eklentidir ve zamanlanmış tüm görevleri argümanları, aralıkları, bağlı oldukları fonksiyonlar ve bir sonraki çalışma zamanlarıyla birlikte listeler. Eklenti ayrıca zamanını kaçırmış görevleri ve cron sisteminde algıladığı sorunları uyarı olarak gösterir. Kurmadan önce eklenti sayfasındaki "Last updated" bilgisine bakın; 1 Kasım 2026 kontrolümüzde eklentinin 2.0.0 sürümü 15 Ekim 2026'da yayımlanmıştı ve bakımı Duplicator ekibine geçmişti.
Eklentilermenüsündeki eklenti ekleme ekranında "WP Crontrol" adıyla arayıp eklentiyi kurun ve etkinleştirin.- Eklentinin kendi menüsünde
Cron > Cron Eventsekranını açın. Eski yol olanTools > Cron Events(Araçlar altında) da hâlâ çalışıyor. - Bir sonraki çalışma zamanı geçmiş görevlere bakın. Çok sayıda görev geride kalmışsa tetikleme sorunu vardır.
- "Action" sütununda "None" yazan görevler hiçbir işe bağlı değildir. Eklenti belgelerine göre bunlar genellikle güvenle silinebilir, ama silmeden önce görevin hangi eklentiye ait olduğunu araştırın.
Eklenti "There was a problem spawning a call to the WP-Cron system on your site" uyarısını gösteriyorsa WordPress kendi sunucusuna istek atıp cron'u başlatamıyor demektir. Bu durumda gerçek cron kurmak genellikle en temiz çözümdür.
Adım 2: DISABLE_WP_CRON ile sayfa yüklemesine bağlı tetiklemeyi kapatın
Handbook'un önerdiği yöntem iki parçalıdır: sistemin zamanlayıcısını wp-cron.php dosyasına düzenli istek atacak şekilde kurmak ve ardından WordPress'in her sayfa yüklemesinde WP-Cron çalıştırmasını kapatmak. Kapatma işlemi, wp-config.php dosyasına şu satırı eklemekle yapılır:
define( 'DISABLE_WP_CRON', true );Satırı /* That's all, stop editing! Happy publishing. */ yorumunun üstüne ekleyin; altına eklenen sabitlerin neden etkisiz kaldığını wp-config.php sabitleri rehberimizde anlattık. Dosyayı cPanel'deki Dosya Yöneticisi (File Manager) ya da FTP ile düzenleyebilirsiniz.
Adım 3: cPanel Cron Jobs ile gerçek cron kurun
cPanel'de zamanlanmış görevler Cron Jobs ekranından (Advanced bölümü) yönetilir. cPanel belgelerine göre barındırma sağlayıcınız bu ekranı kapatmış olabilir; menüde göremiyorsanız sağlayıcınıza sorun.
- cPanel'e girin ve Advanced bölümündeki Cron Jobs simgesine tıklayın.
- Common Settings menüsünden bir aralık seçin ya da Minute, Hour, Day, Month ve Weekday kutularını kendiniz doldurun. Handbook'taki örnek her 15 dakikadır:
*/15 * * * *. - Command kutusuna aşağıdaki komutlardan birini yazın (alan adını kendi adresinizle değiştirin).
- Add New Cron Job düğmesine tıklayın. Görev, Current Cron Jobs tablosunda görünür.
Handbook'ta verilen yöntem wget ile wp-cron.php adresine istek atmaktır. --delete-after seçeneği olmadan wget isteğin çıktısını dosya olarak kaydeder; komutun sonundaki yönlendirme ise her çalışmada e-posta gelmesini engeller:
# wget ile (WordPress Plugin Handbook'taki yöntem)
wget -q --delete-after https://www.ornek.com/wp-cron.php >/dev/null 2>&1
# Sunucuda wget yoksa curl ile
curl -s https://www.ornek.com/wp-cron.php >/dev/null 2>&1Sunucunuzda WP-CLI kuruluysa (paylaşımlı barındırmada her zaman olmayabilir, sağlayıcınıza sorun) HTTP isteği yerine vakti gelmiş görevleri doğrudan çalıştırabilirsiniz. --due-now seçeneği, WP-CLI belgelerine göre üst üste binen çalışmaları önlemek için doing_cron geçici kaydına (transient) saygı gösterir. --path değerini kendi WordPress klasörünüzle değiştirin:
wp cron event run --due-now --path=/home/KULLANICI/public_html >/dev/null 2>&1| Yöntem | Artısı | Dikkat edilecek nokta |
|---|---|---|
| wget / curl ile wp-cron.php | Her paylaşımlı hostingde çalışır, ek araç gerekmez. | İstek web sunucusundan geçer; güvenlik eklentisi veya WAF wp-cron.php isteklerini engelliyorsa çalışmaz. |
| wp cron event run --due-now | Web sunucusundan geçmez, çıktı okunaklıdır. | WP-CLI kurulu olmalı ve komutun yolu doğru olmalı. |
Ne kadar sık çalıştırmalı? Çoğu site için 5 ile 15 dakika arası yeterlidir. cPanel belgeleri, görevleri bir önceki çalışma bitmeden yenisi başlayacak kadar sık zamanlamamanızı önerir; bu durum performansı düşürebilir. Bazı sağlayıcılar en kısa aralığı sınırlar. Cron sözdizimini ayrıntılı öğrenmek isterseniz crontab rehberimize ve cron job rehberimize bakabilirsiniz.
Adım 4: Çalıştığını doğrulayın

- WP Crontrol'de geride kalmış görev sayısının birkaç dakika içinde azaldığını kontrol edin.
- Birkaç dakika sonrasına bir test yazısı zamanlayın ve ziyaret yapmadan yayımlanıp yayımlanmadığına bakın.
Araçlar > Site sağlığıekranındaki gecikmiş işlem uyarısının kaybolduğunu görün.- WP-CLI erişiminiz varsa
wp cron event listile görevleri vewp cron testile WP-Cron'un başlatma mekanizmasını sınayın.
Önbellek eklentisi kullanıyorsanız gerçek cron, önbellekten bağımsız çalıştığı için ayrıca bir ayar gerektirmez. LiteSpeed önbelleği hakkında daha fazlası için LSCache rehberimize göz atın.
Alternatif: ALTERNATE_WP_CRON
wp-config belgesinde bir de ALTERNATE_WP_CRON sabiti anlatılır. Bu yöntem, zamanlanmış yazılar yayımlanmadığında başvurulan bir yönlendirme yaklaşımıdır: cron çalışması gerektiğinde ziyaretçinin tarayıcısı yönlendirilir. Belge, bu yöntemin bazı riskler taşıdığını açıkça belirtir. Gerçek cron kurabiliyorsanız onu tercih edin. Aynı belgede, bir cron sürecinin kaç saniyede bir çalışabileceğini sınırlayan WP_CRON_LOCK_TIMEOUT sabiti de yer alır.
define( 'ALTERNATE_WP_CRON', true );Sık yapılan hatalar
DISABLE_WP_CRONekleyip cPanel'de cron görevi kurmayı unutmak.- Komutta
http://kullanıp sitenin HTTPS'e yönlendirmesine takılmak; adresi sitenin gerçek adresiyle (www dahil) yazın. - Görevi her dakika çalıştırmak; paylaşımlı hostingde gereksiz yük oluşturur.
- Bir güvenlik eklentisinin veya WAF kuralının
wp-cron.phpisteklerini engellediğini fark etmemek. - Site taşındıktan sonra cron komutundaki eski alan adını güncellememek.
Sık Sorulan Sorular
DISABLE_WP_CRON eklemek WP-Cron'u tamamen kapatır mı?
Hayır. Bu sabit yalnızca sayfa yüklemesiyle yapılan otomatik tetiklemeyi kapatır. Görevler yine WP-Cron kuyruğunda durur ve wp-cron.php çağrıldığında ya da wp cron event run çalıştırıldığında yürütülür. Bu yüzden gerçek cron görevi şarttır.
Gerçek cron ne sıklıkla çalışmalı?
Handbook örneği 15 dakikadır. Zamanlanmış yazıların dakikası dakikasına çıkması önemliyse 5 dakika seçebilirsiniz. Daha sık çalıştırmak çoğu sitede fayda sağlamaz, sunucuya yük ekler.
Kaçırılan zamanlanmış yazıyı nasıl yayımlarım?
Yazıyı düzenleyip yayımlama tarihini kontrol edin ve elle yayımlayın. Ardından kalıcı çözüm için bu rehberdeki gerçek cron kurulumunu yapın ve saat dilimi ayarını doğrulayın.
WooCommerce kullanıyorum, ek bir şey gerekir mi?
WooCommerce arka plan işleri için Action Scheduler kullanır ve WP Crontrol'ün eklenti sayfası Action Scheduler desteğini belirtir. Gerçek cron kurulu olduğunda bu işler de ziyaretten bağımsız tetiklenir. Mağaza performansı için WooCommerce hızlandırma rehberimize bakabilirsiniz.
Yazılım, eklenti ve hizmet adları sahiplerine aittir. Bu yazı bağımsız bir teknik rehberdir; adı geçen şirketlerle bayilik veya ortaklık ilişkisi bulunduğu anlamına gelmez.
İlgili içerikler: WordPress site sağlığı uyarıları · WordPress otomatik güncelleme ayarları · WordPress yedekleme ve geri yükleme · WordPress hızlandırma · Cron job rehberi · wp-config.php sabitleri