Ö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.
- <?php
- define('WP_USE_THEMES', false); //Temayı kullanma
- require('wp271/wp-blog-header.php'); //wp-blog-header.php dosyasını çağır
- ?>
- <h2>Günlükten Rastgele Yazılar</h2>
- <ul>
- <?php
- $rand_posts = get_posts('numberposts=5&orderby=rand');
- //rastgele sıralı 5 yazıyı alıyoruz
- foreach( $rand_posts as $post ) :
- ?>
- <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
- <?php endforeach; ?>
- </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.
- <?php
- define('WP_USE_THEMES', false); //Temayı kullanma
- require('wp271/wp-blog-header.php'); //wp-blog-header.php dosyasını çağır
- ?>
- <h2>Dersler Kategorisi</h2>
- <ul>
- <?php
- $rand_posts = get_posts('numberposts=5&&category=5');
- //rastgele sıralı 5 yazıyı alıyoruz
- foreach( $rand_posts as $post ) :
- setup_postdata($post);
- //yazı içeriği ve özetini kullanabilmek için gerekli
- ?>
- <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><br />
- <?php the_excerpt(); ?>
- </li>
- <?php endforeach; ?>
- </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.
Tarih: 05 Haziran 2009 Saat: 15:48
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
Tarih: 05 Haziran 2009 Saat: 16:06
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.
Tarih: 05 Haziran 2009 Saat: 16:16
Teşekkürler Yakup bey..
Tarih: 24 Haziran 2009 Saat: 20:09
Teşekkürlerim ederim . Arşive ekliyorum
Tarih: 26 Ağustos 2009 Saat: 18:20
teşekkürler güzel makale olmuş.