11 Ağustos 2009

Yazıya Ekli İlk Resmi Alma

WordPress Yorum Ekle

WordPress sitenizde yazılarınıza eklediğiniz resimlerden, ilk eklediğiniz resmi önizleme resmi olarak sitenizde kullanmak isteyebilirsiniz. Genelde yeni nesil temalarda bu işlem için özel alanlar kullanılır ancak benim gibi eski tema kullananlar ya da özel alan kullanmayı sevmeyenler için ekledikleri resmin küçük halini (varsayılan olarak 150x150 boyutlarında) temalarında göstermek için elde etmek isteyebilirler.

Yazıya Eklenmiş İlk Resmin Önizlemesini Alıp Göstermek

Bu işlem için öncelikle resmin önizlemesinin adresini elde etmek için aşağıdaki kodu temanızın Tema fonksiyonları (functions.php) dosyasına ekleyin.

  1. function ilk_onizlemeyi_al($post_id) {
  2.  $id = (int) $post_id;
  3.  $args = array(
  4.   'post_type' => 'attachment',
  5.   'post_mime_type' => 'image',
  6.   'numberposts' => 1,
  7.   'order' => 'ASC',
  8.   'orderby' => 'menu_order ID',
  9.   'post_status' => null,
  10.   'post_parent' => $id
  11.  );
  12.  $attachments = get_posts($args);
  13.  if ($attachments) {
  14.    return wp_get_attachment_thumb_url( $attachments[0]->ID );
  15.  }else{
  16.    return 'http://www.siteadi.com/varsayilan.jpg';
  17.  }
  18. }

Böylece "ilk_onizlemeyi_al" adıyla bir fonksiyonumuz olmuş oldu. Fonksiyon eğer yazıya ait bir resim yoksa, kod içerisinden ayarlayabileceğiniz varsayilan.jpg resmini döndürecektir. Bu kısmı kendi sitenize göre düzenlemeyi unutmayın.
Fonksiyonu kullanmak için ise aşağıdaki kodları temanızda hangi dosyada resimleri görüntülemek istiyorsanız (index.php, archive.php, single.php...) o dosyada Loop içerisinde istediğiniz bir yere ekleyin.

  1. <img src="<?php echo ilk_onizlemeyi_al($post->ID);?>" />

Varsayılan Resim Olmadan Kullanma

Yazı içerisinde resim yoksa ekranda birşey göstermek istemeyebilirsiniz. Bu durumda yukarıdaki fonksiyon yerine aşağıdaki kodları functions.php dosyasına ekleyin.

  1. function ilk_onizlemeyi_al($post_id) {
  2.  $id = (int) $post_id;
  3.  $args = array(
  4.   'post_type' => 'attachment',
  5.   'post_mime_type' => 'image',
  6.   'numberposts' => 1,
  7.   'order' => 'ASC',
  8.   'orderby' => 'menu_order ID',
  9.   'post_status' => null,
  10.   'post_parent' => $id
  11.  );
  12.  $attachments = get_posts($args);
  13.  if ($attachments) {
  14.    return wp_get_attachment_thumb_url( $attachments[0]->ID );
  15.  }
  16.  return '';
  17. }

Fonksiyonu kullanarak, eğer resim varsa göstermek, yoksa hiçbir şey göstermemek için aşağıdaki kodları istediğiniz yere ekleyin. Örneğin, temanızda kategorilere tıkladığınızda yazının özetleri geliyorsa yani temanızda the_excerpt() fonksiyonunu kullanan bir tema dosyanız varsa (biliyorsunuz the_excerpt yazı içerisindeki hiçbir html biçimlendirmelerini, resimleri, bağlantıları göstermez) o tema dosyasında yazıya ait bir önizleme resmi göstermek isteyebilirsiniz.

  1. <?php
  2.  $img = ilk_onizlemeyi_al($post->ID);
  3.  if ($img) echo '<img src="' . $img. '" alt="' . $post->post_title . '" title="' . $post->post_title . '" />';
  4. ?>

İlk Resmin Önizlemesi Yazıya Bağlantı Olsun

Önceki yazımda bununla ilgili bir yöntem sunmuştum. Oradaki yöntemin amacı yazı içerisine img etiketi ile eklenmiş olan ilk yazıyı göstermekti. Ama isterseniz yukarıdaki fonksiyonu kullanarak da bu işi farklı bir yöntemle gerçekleştirebilirsiniz. Bunun için aşağıdaki kodları istediğiniz yere ekleyin.

  1. <?php
  2.  $img = ilk_onizlemeyi_al($post->ID);
  3.  if ($img) echo '<a href="' .get_permalink(). '" title="' . $post->post_title . '"> <img src="' . $img. '" alt="' . $post->post_title . '" title="' . $post->post_title . '" /></a>';
  4. ?>

Bu yazının kısa bağlantısı http://www.yakupgovler.com/?p=980.

Yazılarımı RSS aboneliği ile takip edebilir, yeni yazılarıma kolaylıkla ulaşabilirsiniz. Bunun için ise RSS adresimi kullanabilirsiniz.


“Yazıya Ekli İlk Resmi Alma” yazısı için 6 Yorum

Bu yazıya yapılan yorumları dilerseniz, ( RSS 2.0 ) beslemesini kullanarak takibe alabilirsiniz.

  1. Devir dedi ki:

    Yakup bey işime yarayacak kullanışlı kodlar bunlar, çok teşekkür ederim..

  2. joyologo dedi ki:

    soruyu buraya yazacaktim baska yere yazmisim:
    Yakup bey tekrar merhaba,
    bu kodlarla thumbnail değil de resmin medium’unu nasıl çekebilirim?

  3. Yakup Gövler dedi ki:

    @joyologo, koddaki aşağıdaki ifadeyi
    return wp_get_attachment_thumb_url( $attachments[0]->ID );
    aşağıdaki ile değiştirip, deneyin.
    return wp_get_attachment_image_src($attachments[0]->ID, 'medium');
    işe yaraması lazım.

  4. joyologo dedi ki:

    hemen lokalde denedim ancak şöyle bir sorun oluştu; resimleri "X" kutucuk şeklinde gösteriyor. yani resimi bulamamış gibi bir görüntü oluşturuyor. ve bu bulamadığı çarpı işaretli kutulara konu linkini doğru bir şekilde veriyor.

  5. tr dedi ki:

    Merhaba, belki bu konuyla ilgisiz olacak ama bir şey sormak istiyorum.

    Ana sayfada en son eklenen yazı en üstte çıkacak şekilde yayınlanıyor. Bunu nasıl tersine çevirebiliriz?

    Son yazılan yazılar bir öncekinin altına gelecek şekilde ana sayfada listelemek istiyorum.

    Şöyle ki;

    - İlk yazı
    - İkinci yazı
    - Üçüncü yazı
    - ...
    - ...
    - Son yazılan yazı

    Sanıyorum bunu yapmak mümkün olsa gerek, ama bir türlü çözüme ulaşamadım.

    wp-tr forumlarında da bu soruya bir haftadır cevap arıyorum. Dilerseniz oraya da yazabilirsiniz: http://www.wordpress-tr.com/forum/topic/12589

  6. Murat dedi ki:

    tam aradığım özellik. her yazı için ayrı ayrı özel profil alanına resim urlsi girmekten bıkmıştım.

    teşekkürler yakup hocam.