29 Haziran 2009

Resimli Son Yazıları Gösterme

WordPress Yorum Ekle

WordPress'te neredeyse her yazıya artık özel alan olarak önizleme resmi ekliyoruz. Ama yan menümüzde son yazıları gösterirken genelde yazı başlıklarını gösteririz, peki neden önizleme resimlerini de göstermiyoruz?
Ne yazık ki bunu yapmak için bir bileşen yazacak vaktim yok, eğer siz yazabilirseniz sevinirim. Yan menünüzde yazılara eklediğiniz 'thumnail' isimli özel alanda tutulan resim adresini kullanarak yazılarınızı yan menüde göstermek isterseniz aşağıdaki kodları yan menünüzde ya da yazıları nerede göstermek isterseniz oraya ekleyin. Tabi kendinize göre uygun değişiklikleri yapmayı unutmayın.

  1. <li><h2>Son Yazılar</h2>
  2. <ul class="son_yazilar">
  3. <?php $myposts = get_posts('numberposts=10&offset=1');
  4. foreach($myposts as $post)  {
  5. $image = get_post_meta($post->ID, 'thumbnail', true);
  6. ?>
  7. <li>
  8.  <?php if ($image) echo "<img src='$image' width='48' height='48' alt='' />"; ?>
  9.  <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_time('d F Y'); ?>"><?php the_title(); ?></a>
  10.  <div class="clear"></div></li>
  11. <?php }; ?>
  12. </ul>
  13. </li>

Kod içerisinde geçen 'thumbnail' ifadesi yerine, yazılar için kullandığınız önizleme resminin özel alan adını yazınız. Ayrıca daha düzgün bir görünüm için aşağıdaki CSS kodlarını temanızın style.css dosyasına ekleyin.

  1. .son_yazilar li img{
  2.  float:left;
  3.  margin-left: 5px;
  4. }
  5. .clear {
  6.  clear:both;
  7. }

Aslında bunları yapmak Recent Posts isimli bir eklenti var ancak eklentinin çalışabilmesi için Post Plugin Library isimli eklentiyi de kurmanız gerekiyor. Doğrusu böylesine basit bir işlem için toplamda yaklaşık 200 KB'lik bir eklentiyi kullanmak istiyorsanız bunları kullanabilirsiniz.


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

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


“Resimli Son Yazıları Gösterme” yazısı için 12 Yorum

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

  1. Mehmet dedi ki:

    Teşekkürler Yakup bey..

  2. gevv dedi ki:

    Teşekkrler hocam benimde kullanacağım bir uygulama sağolsun r10 forumlarında "loperselim" yardımcı oldu bir kod yazdı sorunsuz çalışıyor fakat sizin yazdığınız arasnda fark var merak ettim

    1. <img src="ID, "resim", $single = true); ?>">
    2. <a href="" rel="bookmark" title="" rel="nofollow"></a>

    Siz kod başında global $ post; kullanmamışsınız ?

    Gösterilecek yazı sayısına ek olarak & offset=1 eklemişsiniz ?

    Bir de $ image kodları içinde $ single = true yerine sadece true kullanmışsınız ?

  3. gevv dedi ki:

    Sanırım kodlar yorumda görnmedi alternatif link 🙂
    http://pastebin.com/m234f4625

  4. Yakup Gövler dedi ki:

    get_posts fonksiyonu verdiğimiz parametrelere (query_post fonksiyonuyla aynı parametreleri alır) göre yazıları çeker. For each döngüsü ile gelen yazıları parça parça alıyorum bu neden $post kullanmaya gerek yok. Hatta kullanmak problem yaratabilir. Offset 1, birinci yazıdan başlaması için, belki gerekli de olmayabilir.
    $single = true ile sadece true kullanmak arasında bir fark yok, benim kullandığım şekli daha uygun.
    Catswhocode sitesinde yazı sonunda verdiğim eklentiler kullanılmaktadır.
    Verdiğim kodları function.php dosyasına bir fonksiyon olarak ekleyip, yan menü dosyasından çağırırsanız çok daha iyi olur.

  5. gevv dedi ki:

    Teşekkürler hocam

  6. gevv dedi ki:

    Bir türlü function.php dosyasında çağıramadım diğer temalara göre denemeler yaptım ama bir şeyler yanlış hata veriyor nasıl oluyor bu işlem ? çözemedim

  7. Yakup Gövler dedi ki:

    function.php dosyasına aşağıdaki kodları ekleyerek, yazımdaki kodları fonksiyon haline getirmiş olursunuz. Kod içerisinde geçen * yıldız karakterini silmeyi unutmayın. WP bağlantı kodlarına rel="nofollow" eklediğinden kodu böyle yazmak zorunda kaldım.

    1. function resimli_son_yazilar($limit = 10) {
    2. $limit = (int) $limit;
    3. $myposts = get_posts('numberposts='. $limit .'&offset=1');
    4. foreach($myposts as $post)  {
    5. $image = get_post_meta($post->ID, 'thumbnail', true);
    6. ?>
    7. <li>
    8.  <?php if ($image) echo "<img src='$image' width='48' height='48' alt='' />"; ?>
    9.  <*a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_time('d F Y'); ?>"><?php the_title(); ?></a>
    10.  <div class="clear"></div></li>
    11. <?php }; }
    12. &#91;/php]
    13. Artık resimli_son_yazilar isimli bir fonksiyonumuz oldu. Fonksiyonu yazıları nerede listeletecekseniz aşağıdaki gibi bir kodla çağırabilirsiniz.
    14. &#91;php]
    15. <li><h2>Son Yazılar</h2>
    16. <ul class="son_yazilar">
    17. <?php resimli_son_yazilar(15); ?>
    18. </ul>
    19. </li>

    Koddaki 15 rakamını değiştirerek farklı sayıda yazı gösterebilirsiniz ayrıca aynı yöntemle farklı yerlerde de yazıları listelebilirsiniz.

  8. raozkardes dedi ki:

    function.php dosyasında php kapanış kodundan önce bir sorun var gibi. Bir türlü çalıştıramadım Yakup Öğretmenim.

  9. Yakup Gövler dedi ki:

    Kod içerisine geçen bağlantı koduna WP otomatik olarak rel="nofollow" eklendiğinden kod bozuluyordu. Kodu güncelledim, kodun içerisindeki * karakterini silmeyi unutmayın.

  10. gevv dedi ki:

    function.php için teşekkürler hocam sağolasınız

  11. Yakup Gövler dedi ki:

    Eklenti yazı içerisindeki resmin küçük hali varsa onu kullanıyor. Yani diyelim ki resmin adı deneme.jpg olsun. Eğer bu dosyanın bulunduğu yerde deneme-150x150.jpg adında küçük hali varsa onu kullanıyor. Ama bunun dışındaki boyutları kullanmıyor. Buradaki 150x150 boyutu Ayarlar/Medya bölümünden ayarlanıyor.
    Eklenti küçük resmin varlığını çok aptal bir şekilde tespit ediyor, ayrıca aptalca bir önbellek sistemi kullandığından eklentinin işleyişini çözmek çok zor.
    Her ne kadar yazıda son yazıları resimli olarak göstermeyi anlatmış olsam da bunun performans açısından kullanılmasını tavsiye etmiyorum. Sebebi ise her resim için bir dosya isteği olacak bu da site performansını düşürecektir.
    Sonuçta şu an için http://www.yann.com/wp-plugins/yd-recent-posts-widget bileşenine bir çözüm önerisi sunamıyorum.

  12. zafer dedi ki:

    Hocam
    Ben ekledim ama yazı başlıkları çıktı.
    bende thumnail yok. Resimleri Medyadan orjinal boyutu ie çıkarıyorum. örnek http://www.ciceksehri.com buradaki resimleri sağ tarafa çıkaramadım. başa bir yolu yokmu? Tşkler.