Veritabanından WordPress’e İmaj Yüklemek
Bugünkü yazımda, edindiğim tecrübelere dayanarak WordPress kullanıcıları için çok işlevsel bir durumdan bahsedeceğim. WordPress içindeki postlardan tek tek imaj yüklemek yerine, veritabanına manuel olarak imaj yüklemenin nasıl olduğunu göstereceğim. Bunun için yapmamız gereken bir kaç işlem var.
Öncelik olarak işlemlerimizin WP veritabanı yapısındaki iki tablo içerisinde gerçekleşeceğini belirteyim: wp_posts vewp_postmeta
WordPress’de eklentilerin yüklendiği dosya yapısı, müdahale edilmediği sürece varsayılan durumda şu şekilde:
www.site.com/wp-content/uploads/sene/ay/dosya.jpg
Burada sene dört basamaklı, ay iki basamaklı olmalı. Örnek:
www.site.com/wp-content/uploads/2012/01/dosya.jpg
Klasörlerde kullanacağınız yıl ve ay isimleri için php’nin date fonksiyonuna bakabilirsiniz.
Şimdi anlatacağım işlemlere geçmeden önce, dosyalarınızın ftp’ye yüklenebilir durumda olduğunu ve dosya yazma izinlerini kontrol edin. Oluşturacağınız fonksiyonun, dosyaları ilgili klasörlere ve dosya yoluna uyacak biçimde atacağına emin olun. Klasörler olmadığı sürece fonksiyonunuzun otomatik olarak klasörü oluşturması gerekecek.
Dosyaları atan fonksiyonunuzun iki tabloya müdahalesi gerekiyor. Öncelikli olarak wp_postmeta tablosundan başlayalım.
Bu tabloda dört adet sütun var: meta_id, post_id, meta_key, meta_value
meta_id auto increment ve müdahale gerektirmiyor. Post_id ise adında belli olduğu gibi ilgili postun idsi oluyor. Post içerisindeki sonradan eklenen tüm diğer (content, title vs. hariç geri kalanlar) veriler burada meta_key ve meta_value sütunlarında tutuluyor. Burada imaj dosyaları için eklememiz gereken,
post_id => post_id
meta_key => “_wp_attached_file”
meta_value => 2012/01/dosya.jpeg
biçiminde olmalı. wp_postmeta ile işimiz bu kadar.
Wp_posts içerisinde farklı, biraz daha kompleks bir yapımız var. WordPress içerisinde posta her imaj yüklediğimizde, veritabanına ilgili post için bir satır daha ekleniyor ve dosyanın bilgilerini tutuyor. Yani resim vs. gibi bir eklentisi olan her post için wp_posts tablosunda en az iki satır verisi bulunuyor. Bu yapıyı kavradıysanız, şimdi yapmamız gerekenlere geçelim.
Wp_posts tablosunda müdahale etmemiz gereken 7-8 tane sütün var. Öncelikli olarak işlemlerimizi önceden bir post oluşturduğumuzu varsayarak devam edeceğiz.
İmaj yükleyecek fonksiyonunuz wp_posts tablosuna ilgili her post için bir satır ekleyecek ve sütünlarda şunlar barındırılacak:
post_date => eklenme tarihi
post_date_gmt => eklenme tarihi
post_title => imaj adı
post_name => imaj adı
post_type => “attachment”
post_mime_type => “image/dosyauzantisi”
post_parent => parentId
post_status => “inherit”
guid => dosya yolu
Burada belirtmek istediğim bir kaç husus var. Öncelikli olarak post_date ve post_title için “Y:m:d H:i:s” biçiminde zamanı ekleyin.post_name ve post_title için imaja bir isim verin ve her ikisinin de aynı ismi tuttuğundan emin olun. post_mime_type için dosya uzantısı “.jpg” ,”.png” biçiminde olmalıdır. Dosya uzantısını almak için php’nin strrpos ve substr fonksiyonlarını kullanabilirsiniz.
post_parent, ilgili postun idsini tutmalı. Örnek: 1145 numaralı posta resim eklemek istiyorsak, post_parent = 1145 olmalı.
guid için de tam dosya yolunu (path) girmeyi ihmal etmeyin. Yani tarayıcınızda gördüğünüz resmin linkini kopyalayıp buraya yapıştırın.
Tüm işlemleri düzgünce yaptıktan sonra fonksiyonunuzu çalıştırın. İlgili postun edit bölümdeki insert/upload linkine tıkladığınızda, galerinin içinde iliştirdiğiniz imajı thumbnail olarak ve imajın özelliklerini göreceksiniz.
Tüm wordpress dostlarına iyi bir referans olması dileğiyle…