wp-cron.php Gerçekten Gerekiyor mu? Gerçek Cron ile Değiştirme

wp-cron.php gerçekten gerekiyor mu? sorusuna verilecek yanıt: “Evet, ama optimize edilebilir.”
WordPress sitelerinde wp-cron.php, zamanlanmış görevleri yürütmek için kullanılır. Örnek olarak:

  • Yazıların zamanında yayınlanması
  • Eklenti güncellemelerinin kontrolü
  • Ön bellek temizliği
  • Otomatik yedeklemeler

Ancak, varsayılan davranışı her ziyaretçide çalıştırılmasıdır – bu da yoğun trafikte performans sorunlarına veya hiç trafik almayan sitelerde cron görevlerinin çalışmamasına yol açabilir.

Gerçek Cron ile Değiştirme

1. WordPress’in varsayılan Cron’unu devre dışı bırak
wp-config.php dosyanızda aşağıdaki satırı ekleyin:

define('DISABLE_WP_CRON', true);

Bu satır, WordPress’in wp-cron.php dosyasını otomatik olarak çalıştırmasını engeller.

2. Gerçek cronjob oluşturun (Linux sunucu için)

Eğer paylaşımlı hosting değil de kendi VPS veya bir Linux sunucunuz varsa, şu adımları izleyin:

Cronjob Komutu (örnek: her 5 dakikada bir):

*/5 * * * * wget -q -O - https://example.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Alternatif olarak curl kullanılabilir:

*/5 * * * * curl -s https://example.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Güvenlik notu: Eğer wp-cron.php‘yi herkese açık bırakmak istemiyorsanız, IP sınırlaması veya htaccess koruması ekleyebilirsiniz.

Avantajlar

  • Daha doğru zamanlama
  • Daha düşük sunucu yükü
  • Trafik bağımlılığının kaldırılması

Ne zaman Gerekli Değildir?

  • Düşük trafikli ve az işlem yapan küçük sitelerde çok büyük fark yaratmaz.
  • Bazı managed WordPress hostingler zaten wp-cron‘u optimize şekilde çalıştırır (örneğin Kinsta, WP Engine).

DirectAdmin Üzerinden Cronjob Ekleme

Adımlar:

  • DirectAdmin’e giriş yap.
  • Sol menüden “Advanced Features” > “Cron Jobs” sekmesine git.
  • “Add New Cron Job” kısmını doldur:
Ayar Değer
Minute */5 (her 5 dakikada bir)
Hour *
Day *
Mount *
Weekday *

Command alanına şunu yaz:

/usr/local/bin/php -q /home/kullaniciadi/domains/siteniz.com/public_html/wp-cron.php

Notlar:

  • kullaniciadi: DirectAdmin’deki kullanıcı adınız.
  • siteniz.com: Alan adınız.
  • Eğer php komutu çalışmazsa, tam PHP yolu gerekebilir. Örneğin:
/usr/local/php82/bin/php -q /home/...

Alternatif olarak wget ya da curl ile de çalıştırabilirsiniz:

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

Doğrulama
Cron’un düzgün çalıştığını test etmek için WordPress panelinden bir zamanlanmış görev (örneğin: zamanlı yazı yayını) oluşturun. Yayın saati geldiğinde düzgün çalışıyorsa sistem tamamdır.

Ekstra: wp-cron.php’yi dışarıya kapatmak için?
Eğer sadece sunucudan çalışsın, ziyaretçiler erişemesin istiyorsan .htaccess dosyanıza şunu ekleyebilirsin:

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

Bu, sadece sunucunun kendisinin çalıştırmasına izin verir.

    Bir yanıt yazın