05 Haziran 2009

Yazıları Bir PHP Dosyasında Gösterme

WordPress Yorum Ekle

Önceki yazımda ID'sini bildiğiniz bir yazının içeriğini WordPress'in dışında bir dosyada nasıl gösterebileceğinizi anlatmıştım. Diyelim ki sitenizde yazılarınızı yayımladığınız bir WP kurulumu var ve yine aynı sitenizde bir de forum sayfanız var. Diyelim ki WP sitenizdeki yazılardan istediklerinizi forumunuzun bir köşesinde ya da kendinizin oluşturduğu bir php sayfasında göstermek istiyorsunuz. Normalde bunu php + mysql ikilisini kullanarak doğrudan veritabanından çekebilirsiniz. Ancak işin içine yazının kategorileri, etiketlerini yayımlamak da girdiğinde yapacağınız sorgu iyice karışabilir. Halbuki bunu WordPress fonksiyonları ile kolayca ve esnek bir şekilde yapabiliriz.
Bu işlem için temelde get_posts fonksiyonu kullanılır. Bu fonksiyon WP'ye ait, girilen parametrelere uyan yazıların bütün bilgilerini döndüren çok esnek bir fonksiyon. Daha önce query_post fonksiyonunu bir şekilde kullandıysanız, get_posts fonksiyonunu kavramakta zorlanmayacaksınız.
WordPress'in çekirdek fonksiyonlarına ulaşabilmek için WordPress'in 'wp-blog-header.php' isimli dosyasını kendi php dosyanıza çağırmanız yeterli. Bunu da require ya da include fonksiyonlarını kullanarak yapabilirsiniz. Diyelim ki WordPress kurulumunuz sitenizde wp klasöründe ve siz de sitenizin ana klasöründeki bir php dosyasında yazıları rastgele olarak listelemek istiyorsunuz. Bunun için aşağıdaki kodları ilgilil php dosyasına eklemeniz yeterli.

  1. <?php
  2.  define('WP_USE_THEMES', false); //Temayı kullanma
  3.  require('wp271/wp-blog-header.php'); //wp-blog-header.php dosyasını çağır
  4. ?>
  5. <h2>Günlükten Rastgele Yazılar</h2>
  6.     <ul>
  7.  <?php
  8.  $rand_posts = get_posts('numberposts=5&orderby=rand');
  9. //rastgele sıralı 5 yazıyı alıyoruz
  10.  foreach( $rand_posts as $post ) :
  11.  ?>
  12.     <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
  13.  <?php endforeach; ?>
  14.     </ul>

get_posts parametresi query_post fonksiyonu ile aynı parametreleri alabilir. foreach döngüsü ile dönen değerleri $post isimli bir değişkene teker teker aktarıyoruz. Burada $post ismi kullanmazsanız the_title ya da the_permalink fonksiyonları kullanılamaz.
Yukarıdaki örneğe benzer olarak kategori ID'si 5 olan bir kategorideki son 10 yazıyı özetleriyle birlikte gösterelim. Bu sefer kodumuz şöyle olacak.

  1. <?php
  2.  define('WP_USE_THEMES', false); //Temayı kullanma
  3.  require('wp271/wp-blog-header.php'); //wp-blog-header.php dosyasını çağır
  4. ?>
  5. <h2>Dersler Kategorisi</h2>
  6.     <ul>
  7.  <?php
  8.  $rand_posts = get_posts('numberposts=5&&category=5');
  9. //rastgele sıralı 5 yazıyı alıyoruz
  10.  foreach( $rand_posts as $post ) :
  11.   setup_postdata($post);
  12. //yazı içeriği ve özetini kullanabilmek için gerekli
  13.  ?>
  14.     <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><br />
  15.      <?php  the_excerpt(); ?>
  16.    </li>
  17.  <?php endforeach; ?>
  18.     </ul>

Kodda geçen setup_postdata fonksiyonu the_excerpt veya the_content fonksiyonlarını kullanabilmeniz için gerekli. Bu fonksiyonu kullanmadan da örneğin yazı içeriğini göstermek isterseniz echo $post->post_content; kodunu kullanabilirsiniz.
Fonksiyonla ilgili daha fazla neler yapabileceğinizi get_posts sayfasını inceleyerek öğrenebilirsiniz.


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

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ıları Bir PHP Dosyasında Gösterme” yazısı için 5 Yorum

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

  1. gevv dedi ki:

    Teşekkürler hocam faydalı bir bilgi. Acaba smf forumun son konularını wp üzerinde mesela yan menülerde görüntüleme için bir yöntem varmıdır

  2. Yakup Gövler dedi ki:

    Forum sistemleri hakkında ayrıntılı bilgiye sahip değilim ama yaptığım araştırmalar sonucu bunu ve bunu buldum. Sanırım işinize yarar.

  3. Mehmet dedi ki:

    Teşekkürler Yakup bey..

  4. Bugra Togan dedi ki:

    Teşekkürlerim ederim . Arşive ekliyorum

  5. php coder dedi ki:

    teşekkürler güzel makale olmuş.