Bu seferki dersimiz de metaların bir tık sonrası olan ve mecbur kaldığımızda mutlaka başvuracağımız veritabanı çağrıları. WordPress ilk bakışta karmaşık, fakat kendi fonksiyonlarıyla son derece mantıklı ve güvenli bir veritabanı yapısına sahip. Bakalım bir geliştirici olduğumuzda bunu nasıl avantaja çevirebiliriz.

Bağlantı

Eklentinizi kurala uygun yapıyorsanız aslında her daim wordpress veritabanına bağlısınız demektir. Basit bir değişken çağrısıyla bağlantının bir kopyasını elde edip istediğimiz çağrıları yapabiliriz.

global $wpdb;
$results = $wpdb->get_results( 'SELECT * FROM wp_options WHERE option_id = 1', OBJECT );

Bu örnekte ne çağrısı yaptığımız çok önemli değil, amaç bağlantıyı kurmak için kullandığımız global $wpdb; çağrısı.

Sonuç türü (Output type)

Veritabanı çağrısı bize çok satırlı sonuç döndürecekse 4 değişik biçimden birisini seçerek sonucu işleyebiliriz.

 Tür Açıklama
OBJECT  Sayısal indeksli satır objeleri
OBJECT_K  İlk sütünün ismiyle indekslenen satır objeleri
 ARRAY_A  Sayısal indekslenmiş dizilimler. Her biri kendi içinde çağırışımsal indeksli dizilimlerden oluşur.
 ARRAY_N  Sayısal indekslenmiş sayısal indeksli dizilimler.

Sorgu fonksiyonları

Bir kaç değişik sorgu fonksiyonu barındıran wordpress, kullanımları konusunda dikkatli olmamızı bekliyor. Özellikle içeriklerin düzgün şekilde escape edilmeleri bu konuda çok önemli.

İlk örneğimizdeki sorgu bir önceki yazımda da anlattığım delete_post_meta() fonksiyonun içeriği:

//Bu sorgu yöntemi genel sorgular için.
//Sonuç olarak etkilenen satır sayısını döndürüyor
//Hata durumunda FALSE döndürüyor,
//0'dan ayırmak için == operatörünü kullanmak lazım
//CREATE, ALTER, DROP ve TRUNCATE esas kullanım yeri
$result = $wpdb->query(
    $wpdb->prepare(
    "
        DELETE FROM $wpdb->postmeta
        WHERE post_id = %d
        AND meta_key = %s
        ",
        13, 'gargle'
    )
);

Şimdi diğer fonksiyonlar daha kolay anlaşılır olacak:

//Tek bir değişken değerini almak için kullanılır
$wpdb->get_var( 'query', column_offset=0, row_offset=0 );

//Tek bir satırı almak için kullanılır
//Birden fazla sonuç varsa offset değerine göre bir tanesi döner
//Fakat diğer sonuçlar kullanım için cache'te bekler
$wpdb->get_row('query', output_type, row_offset=0);

//Tek bir sütün değeri için
$wpdb->get_col( 'query', column_offset );

//Tüm diğer genel ve çoklu sonuçlar için
$wpdb->get_results( 'query', output_type );

//Ekleme
$wpdb->insert( $table, $data, $format );

//Değiştirme, yoksa ekleme
$wpdb->replace( $table, $data, $format );

//Güncelleme
$wpdb->update( $table, $data, $where, $format = null, $where_format = null );

//Silme
$wpdb->delete( $table, $where, $where_format = null );

//Önbellek temizliği
$wpdb->flush();

WordPress bilgisi çekmek

Elbette buradaki en hassas konu wordpress’in kendi oluşturduğu bir bilgiye erişmek. Genelde bu verilere fonksiyon kullanarak da ulaşmak mümkün, fakat bazı durumlarda daha optimize ve hızlı veritabanı çağrıları yaparak eklentimizin hızını artırmamız mümkün. Fakat bu yazımız fazla uzadı ve detaylandırmadan önce yazdıklarımı sindirmeniz daha iyi olacaktır. Bir sonraki yazımda wordpress bilgilerini nasıl veritabanı sorgusuyla alacağımızdan bahsedeceğim.

Barış Altop
Barış Altop
Matematik tutkusunu yazılım sanatına dönüştürmeyi hedef seçmiş, bilgisayar mühendisliği doktora öğrencisi. Biraz Apple tutkunu, ama teknoloji düşkünü yazılımcı.