Timthumb, Vt_resize, AQ Resize gibi eklenti olmayan ama benim pek randıman alamadığım kütüphaneleri de kullanabilirsiniz ancak WordPress’in kendi özelliğini kullanmak yerine bunları tercih edeceğinizi düşünmüyorum.
Website optimizasyonu için resimler oldukça önemli yer kaplıyor. Google Pagespeed üzerinden sitenizin hız kontrolünü yaptığınız zaman resim sıkıştırma ve boyutlandırma için çok büyük yüzdelik kısım ayrılıyor. Üzerinde çalıştığım bir proje için ihtiyaç duyduğum resim boyutlandırma işleminin nasıl olduğunu size açıklamaya çalışacağım.
Kodun temelinde WordPress’in 3.5.0 sürümünde eklenen WP_Image_Editor sınıfı yer alıyor. Bu sınıf yardımıyla oluşturacağımız kod ile öne çıkarılan görselimizi alıp, tekrar boyutlandırma işleminin ardından – istersek farklı bir isimle bile olabilecek şekilde – yeniden kayıt ederek o resmi kullanacağız.
Ekleyeceğim kod içerisindeki yorum satırları sayesinde tüm satırların anlamını açıklamış olacağım.
if (get_the_ID() && get_post_thumbnail_id(get_the_ID())) { // Yazının yada Resimin ID'si varsa
$resimDizi = wp_get_attachment_image_src(get_post_thumbnail_id(get_the_ID()), 'full'); //ORGINAL RESİM BOYUTU - default = full
$resimAdres = $resimDizi[0]; // Dizideki resim URL'si
$resimYol = realpath(str_replace(get_bloginfo('url'), '.', $resimAdres));
$isim = basename($resimYol);
$yeniResimYolu = str_replace($isim, 'onek_' . $isim, $resimYol); // Yeni kayıttaki ön ek - "onek_" ister değiştirin istereniz silin
$yeniResimAdres = str_replace($isim, 'onek_' . $isim, $resimAdres);
if (!file_exists($yeniResimYolu)) {
$degisecekResim = wp_get_image_editor($resimYol); // Hayat kurtaracak kodumuz
if (!is_wp_error($degisecekResim)) {
$degisecekResim->resize(120, 120, true); // Resimi 120x120 yeniden boyutlandırma, true kesme işlemini temsil ediyor
$degisecekResim->save($yeniResimYolu); // Resmi yeniden ön eke sahip olarak kayıt ediyor.
}
}
}
Bu kodu while döngüsü içerisinde bir yere yazdıktan sonra boyutlandırılmış öne çıkarılan görselinizi göstermek için
kodunu kullanmanız gerekmektedir.
Hepimiz biliyoruz ki bu kodu sadece bir yerde kullanmayacağız, farklı farklı yerlerde kullanmamız gerekecek ve her döngünün içerisine bu kodu yazmamız döngünün şişmesini, sunucunun CPU’sunun zorlanmasına sebep olacak. O yüzden bunu her döngüde ayrı ayrı kullanmak yerine direk olarak functions.php üzerinden bir fonksiyon oluşturarak kısa bir şekilde yapmak daha mantıklı, hızlı ve kullanışlı bir çözüm olacaktır. Onun için gerekli kodlarımız
function ocgBoyut($resimID, $genislik = 100, $yukseklik = 100) { // Öne Çıkarılan Görsel Boyutlandırma Fonksiyonu
$resimDizi = wp_get_attachment_image_src($resimID, 'full');
$resimAdres = $resimDizi[0]; // Dizideki resim URL'si
$resimYol = realpath(str_replace(get_bloginfo('url'), '.', $resimAdres));
$isim = basename($resimYol);
$yeniResimYolu = str_replace($isim, 'onek_' . $isim, $resimYol); // Yeni kayıttaki ön ek - "onek_" ister değiştirin istereniz silin
$yeniResimAdres = str_replace($isim, 'onek_' . $isim, $resimAdres);
if (!file_exists($yeniResimYolu)) {
$degisecekResim = wp_get_image_editor($resimYol); // Hayat kurtaracak kodumuz
if (!is_wp_error($degisecekResim)) {
$degisecekResim->resize($genislik, $yukseklik, true); // Resimi Genislik x Yukseklik olarak yeniden boyutlandırma, true kesme işlemini temsil ediyor
$degisecekResim->save($yeniResimYolu); // Resmi yeniden ön eke sahip olarak kayıt ediyor.
}
}
return $yeniResimAdres;
}
Resimin ekleneceği while döngüsü içerisine
kodunu ekleyerek boyutlandırılmış resminizi gösterebilirsiniz.
Kodlar içerisinde açıklamalarda belirttiğim kısımları düzenleyebilirsiniz. Mesela ben yeni kayıt edilecek resimlerimde ön ek bulunmasını istemediğim için “onek_” kodunu silerek işlem yaptım. Bunun dışında bu kodu geliştirmek isterseniz WordPress Codex sayfasında yer alan WP_Image_Editor sınıfını ve wp_get_image_editor fonksiyonunu inceleyebilirsiniz.
Eksikleri, yanlışları veya sorunlarınızı sitemin üzerindeki yorum kısmından belirtirseniz yardımcı olmaya çalışırım.
Kaynak: Wordpress Resim Boyutlandırma - Image Resize