WordPress Cron Job Oluşturma

Emre Nogay Emre Nogay · · WordPress

WordPress cron job oluşturmak yani zamanlanmış istekler gerçekten çok kolaylaştırılmış. Bir senaryo üzerinden ilerleyelim ki anlatım kolay olsun. WordPress için bir eklenti kodladığınızı düşünelim. Bu eklentide siteye hiç kimse girmese de, belirlenen zamanda bir kod parçasının çalışması gerekiyor. Bu kod parçasının işlevi, veritabanındaki bir sayıya her gün +1 eklesin.

Yazdığım kodların ne işe yaradığını, kendinize göre özelleştirebilmeniz için açıklayacağım.

Her şeyden önce, WordPress üzerinde bazen cron işlevleri kapatılmış olabiliyor. Bunun açılması için, aşağıdaki kodu ekliyoruz.

define("ALTERNATE_WP_CRON", true);

WP-Cron Zamanlanmış Kod Ekleme

if ( ! wp_next_scheduled( 'belirlemek_istediginiz_cron_ismi' ) ) {
   wp_schedule_event( time(), 'cron_calisma_zamani', 'belirlemek_istediginiz_cron_ismi' );
}

Efenim üstte ki kodumuzda, eğer “belirlemek_istediginiz_cron_ismi” adında bir cron yoksa, tanımla komutunu girmiş olduk. Bu değeri kendi vermek istediğiniz isimle değiştirin. Şimdi gelelim bu zamanlanmış görevin ne zaman çalışacağına.

İşin çalışma zamanını wp_schedule_event fonksiyonunda 2. parametre olarak gireceğiz. Zaten üstteki kodda cron_calisma_zamani olarak belirttim.

add_filter( 'cron_schedules', 'cron_calisma_zamani_callback');
function cron_calisma_zamani_callback()
{
	return array(
		'her_dakika' => array(
			'interval' => 60,
			'display' => 'Her dakika'
		),
		'her_saat' => array(
			'interval' => 60 * 60,
			'display' => 'Her saat'
		),
		'her_gun' => array(
			'interval' => 60 * 60 * 24,
			'display' => 'Her gün'
		)
	);
}

WordPres cron job oluşturma için yukarıdaki örnekte, cron’u 3 farklı zamanda çalıştırabilmeniz için kod ekledim. Her dakika, her saat ve her gün. Bunlardan birini kullanabiliriz ama özel kendi belirlediğiniz bir zaman için nasıl çalışacak onun mantığını anlatayım.

Dizi içerisindeki interval anahtarının değerine saniye türünden zaman girmeniz gerekiyor yani timestamp. Mesela her 3 günde bir çalışan zaman belirtmek isteseydik 60 * 60 * 24 * 3 şeklinde bi çarpma işlemi yazmamız gerekecekti.

Şu ana kadar yazdığımız kodları birleştirelim, nasıl kullanacağımızı görün kafanız karışmasın.

define("ALTERNATE_WP_CRON", true);

if ( ! wp_next_scheduled( 'belirlemek_istediginiz_cron_ismi' ) ) {
   wp_schedule_event( time(), 'her_gun', 'belirlemek_istediginiz_cron_ismi' );
}

add_filter( 'cron_schedules', 'cron_calisma_zamani_callback');
function cron_calisma_zamani_callback()
{
	return array(
		'her_dakika' => array(
			'interval' => 60,
			'display' => 'Her dakika'
		),
		'her_saat' => array(
			'interval' => 60 * 60,
			'display' => 'Her saat'
		),
		'her_gun' => array(
			'interval' => 60 * 60 * 24,
			'display' => 'Her gün'
		)
	);
}

Cron’u tanımlamayı ve ne zaman çalışacağını hallettiğimize göre, şimdi yaptırmak istediğimiz işlemi nerede yaptıracağız, kodları nereye yazacağız onu görelim.
Bunun için add_action fonksiyonunu kullanarak, belirlemek_istediginiz_cron_ismi adını verdiğimiz fonksiyona bir kanca atacağız.

add_action( 'belirlemek_istediginiz_cron_ismi', function () {
	//Bu fonksiyon içerisinde yaptirmak istediğiniz işlemin kodlarını yazın.
} );

WordPres cron job oluşturma için tüm işlemler bu kadardı. Sormak istediğiniz veya kafanıza takılan bir şey olursa yorum yaparak sorabilirsiniz. Size yardımcı olmaktan mutluluk duyarım.

Yardımcı olabilecek kaynaklar;

Yorumlar

"WordPress Cron Job Oluşturma" yazısı için 2 yorum bulundu

Hocam 5 günde bir çalıştırmak için 60 * 60 * 24 * 5 yapmak yeterli olur mu

Cevapla

Merhaba evet 5 günde 1 kere çalıştırmak için 432.000 saniye yeterli.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

İnternet bağlantınız kesintiye uğradı.