Cron_schedules ile yeni program saatleri oluşturabilirsiniz:
function my_cron_schedules($schedules){
if(!isset($schedules["5min"])){
$schedules["5min"] = array(
'interval' => 5*60,
'display' => __('Once every 5 minutes'));
}
if(!isset($schedules["30min"])){
$schedules["30min"] = array(
'interval' => 30*60,
'display' => __('Once every 30 minutes'));
}
return $schedules;
}
add_filter('cron_schedules','my_cron_schedules');
Şimdi işlevinizi planlayabilirsiniz:
wp_schedule_event(time(), '5min', 'my_schedule_hook', $args);
Yalnızca bir kez programlamak için bir işleve sarın ve çalıştırmadan önce kontrol edin:
$args = array(false);
function schedule_my_cron(){
wp_schedule_event(time(), '5min', 'my_schedule_hook', $args);
}
if(!wp_next_scheduled('my_schedule_hook',$args)){
add_action('init', 'schedule_my_cron');
}
$ Args parametresine dikkat edin! $ Args parametresini wp_next_scheduled içinde belirtmemek, ancak wp_schedule_event için $ args parametresine sahip olmak, aynı olayın neredeyse sonsuz sayıda zamanlanmasına neden olur (yalnızca bir tane yerine).
Son olarak, çalıştırmak istediğiniz gerçek işlevi oluşturun:
function my_schedule_hook(){
// codes go here
}
Her sayfa yüklendiğinde wp-cron'un zamanlamayı kontrol ettiğini ve zamanlanmış işleri çalıştırdığını belirtmenin önemli olduğunu düşünüyorum.
Yani, saatte yalnızca 1 ziyaretçisi olan düşük trafikli bir web siteniz varsa, wp-cron yalnızca bu ziyaretçi sitenize göz attığında (saatte bir kez) çalışır. Ziyaretçilerin saniyede bir sayfa istediği yüksek trafikli bir siteniz varsa, wp-cron her saniye tetiklenir ve sunucuda ekstra yüke neden olur.
Çözüm, wp-cron'u devre dışı bırakmak ve gerçek zamanlı bir cron işi ile en hızlı tekrarlanan zamanlanmış wp-cron işi zamanınızda (sizin durumunuzda 5 dakika) tetiklemektir.
Lucas Rolff sorunu açıklıyor ve çözümü ayrıntılı olarak veriyor.
Alternatif olarak, wp-cron'u devre dışı bırakmak ve gerçek bir cron işi ile tetiklemek istemiyorsanız, sitenizi sorgulamak (ve wp-cron'u tetiklemek) için her 5 dakikada bir UptimeRobot gibi ücretsiz bir 3. taraf hizmetini kullanabilirsiniz .