API Tanımı : WordPress Transients API

Transients API WordPress seçenekler alt yapısının benzeri bir sistem olarak ortaya çıktı. Normal seçenekler alt yapısından farklı olarak bu API kullanıldığında belirlenen seçeneklerin ya da içeriklerin geçici süre ile veritabanında ya da memcache eklentisi yardımıyla sunucunun ram hafızasında tutulmasını sağlıyor. Böylelikle çerez kullanımı yerine daha güvenli olarak veritabanında seçenek saklayabiliyorsunuz.

Transients API

Genel olarak WordPress önbellekleme (cache) eklenti yapımcıların sorgu azaltarak sistemi hızlandırmak için kullandığı bu API WordPress içerisinde en çok sevdiğim kodlardan bir tanesi. Oluşturma, kaldırma gibi seçeneklerin ve veritabanında tutulacağı süreyi belirleyebilir ve sorgu sayısı ve sorgu çağırma zamanını azaltabilirsiniz.

Transients API fonksiyonları

API yardımıyla veritabanında konumlanacak seçeneklerin ve değerlerin belirlenmesi konusunda kullanabileceğiniz fonksiyonlar bulunmakta. Aslında tamı tamına 3 adet fonksiyon var. Bunlar ve kullanımları şu şekilde;

  • set_transient : API içerisinde seçenek adını, değerini ve ne kadar tutulacağı konusunda belirlemeyi bu fonksiyonla tanımlıyoruz.
  • get_transient : Belirlenen seçeneği getirmeye yarayan fonksiyon budur.
  • delete_transient : Belirlenmiş olan seçeneği zamanını beklemeden elle silme işlemi yapan fonksiyon.

Yukarıdaki fonksiyonları WordPress Multisite özelliği ile kullandığınızda ise;

  • set_site_transient : Kullanılan alt site içerisindeki değeri belirlemeye yarayan fonksiyon.
  • get_site_transient : Kullanılan alt site içerisindeki değeri getirmeye yarayan fonksiyon.
  • delete_site_transient : Kullanılan alt site içerisindeki değeri elle silmeye yarayan fonksiyon.

Transients API Fonksiyonları Kullanımı

Değerleri Kaydedelim

set_transient fonksiyonunu kullanırken Türkçe olmayan karakterler ile önce seçenek adını belirlemeliyiz. Sonrasında değeri belirlememiz gerekmekte. Bu veri elle verdiğimiz ya da bir fonksiyondan gelebilecek veri olabilir. Sonrasında ise zaman damgasını belirlemeliyiz. WordPress tarafından önceden tanımlanmış zaman tanımlarını kullanabiliriz. Yazının içinde bunlardan da bahsedeceğim.

Burada $secenek seçenek adı, $deger değeri ve $zaman aşağıda belirttiğim zaman değerinin karşılığıdır;

WordPress Zaman Tanımları

WordPress kendi içerisinde zaman tanımlamalarını barındırmaktadır. Bunlar WordPress 3.5’tan itibaren DEFINE yöntemi ile önceden tanımlanmıştır. Bu değerler saniye bazından tanımlama yapar.

Zaman tanımları seçeneğin veritabanında ne kadar tutulacağını belirler ve bunun kullanımı şu şekildedir. Örnekte “deneme_secenek” adında bir seçeneğe “Selam” değeri ile bir saatlik bir tanım yapıyorum. Böylelikle deneme_secenek bir saat boyunca veritabanından erişilebilir olacak.

Değerleri Getirelim

Değerleri getirmek için get_transient fonksiyonunu kullanıyoruz. Burada $secenek seçeneğin adını temsil ediyor.

Önceden belirlediğimiz deneme_secenek seçeneğinin verisini döndürmek için kullanalım.

Bu sorgunun döngüsü eğer verimiz var ise “Selam” olacaktır. Eğer belirlenmemişse ‘Veri Yok’ olarak bir çıktı alacağız.

Seçeneği Silelim

delete_transient daha önce belirttiğim gibi eklenen seçeneğin silinmesini sağlayan bir fonksiyondur. Normal şartlar altında WordPress zamanı dolduğunda bu veriyi silecektir ancak biz bu veriyi daha önce silmek için bu fonksiyondan faydalanabiliriz. Yine $secenek daha önce belrilediğimiz seçeneğin adı olmak durumunda.

Bizim örneğimizde ise “deneme_secenek” verisini silmemiz gerekmekte.

Tam Bir Örnek Verelim

Öne çıkan yazılarımı çağırdığımız ve sorgu süremiz, yapılan sorguları azaltmak için Transients API kullandığımız bir loop hazırlayalım. Burada öncelikle sorgumuzu veritabanından sorgulatıyoruz. Eğer böyle bir sorgu bulunamazsa WP_Query kullanarak The Loop oluşturuyoruz. Örnekte çok basit bir başlık çıktısı verdim.

Umarım yeteri kadar açıklayıcı olabilmişimdir. Daha fazlası için WordPress Codex sayfasını ziyaret edebilirsiniz. WordPress Codex

  • Merhaba,

    Benim sorgu konusunda en çok sıkıntı yaşadığım nokta Revision Slider ve Visual Composer eklentileri ile ilgili. Transients API bu eklentilere uygulanabilir mi? Uygulanabiliyorsa başka bir yazınızda bunu da anlatabilir misiniz?

    • Selam,

      Revolution slider üzerinde direkt olarak kodlamaya müdahale gerektirebilir. Ancak Visual composer geliştirilebilir olduğundan vc-addons içindeki ya da kullanılan şablonlardaki sorgulara transient eklenerek sorgu sayısı düşürülebilir. Yapısal olarak değerlendirerek yazı ile taçlandırabilirim evet 😀