Sevban.com

Sevban.com bir weblog'tur. Güncel olaylar, web, teknoloji ve sinemanın yanında Sevban kişisinin hayatından kesitler sunmaktadır. Abone olayım hiç bir yazıyı kaçırmayayım diyenler için: RSS

query_posts

16 Ağustos 2007 - 2:20 / WordPress / 1070 defa okundu

query_posts WordPress‘de kullanılan bir element. query_posts’u kullanarak sitenizde dilerseniz son 10 yazıyı gösterebilir, ana sayfanızda istediğiniz bir kategoriye ait olan yazıları gösterebilir, istemediğiniz kategorilerin gösterilmesini engelleyebilirsiniz ya da yazılarınızı eskiden yeniye veya yeniden eskiye doğru gösterilmesini de sağlayabilirsiniz. Peki nasıl mı oluyor?

Basit olarak WordPress’de yazılar şu şekilde listelenir.

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php the_content(); ?>
<?php endwhile; ?>
<?php endif; ?>

Bu durumda yazılar alt alta tarihine göre listelenecektir. Diyelim ki biz ana sayfamızda son 10 yazımızı listelemek istiyoruz. Bu durumda imdadımıza query_posts yetişiyor :)

<?php query_posts( 'showposts=10' ); ?>
<?php if( have_posts() ) : ?>
<?php while( have_posts() ) : the_post(); ?>
<ul>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
</ul>
<?php endwhile; ?>
<?php endif; ?>

Burada normal listelemenin dışında başka bir listeleme başlatmış oluyoruz ve query_posts elementini kullanarak 10 adet yazının başlıklarını gösteriyoruz. Bunun bir örneğini canlı olarak bu sitede en alt kısımda görebilirsiniz. query_posts elementinin pek çok kullanım şekli vardır. Onları da gösterelim :)

İstediğiniz bir kategoriye ait yazıları ana sayfada göstermek için:

<?php
   if (is_home()) {
      query_posts("category_name=haberler");
   }
?>

Eğer bu kodu bir önceki örnekteki gibi listelemenin başladığı satırın hemen üstüne yerleştirirseniz; ana sayfada sadece haberler kategorisine ait yazıları göstermiş olursunuz. is_home() elementi de yazıları sadece ana sayfada göstermemizi sağlıyor.
Aslında kategorinin ismini kullanmak yerine id’sini de kullanabiliriz. Bunun için haberler kategorisinin id’sinin 3 olduğunu varsayarsak category_name=haber yerine cat=3 yazmamız yeterli olacaktır.

Birden fazla kategoriyi de bu şekilde gösterebiliriz. Örnek olarak:

<?php
   if (is_home()) {
      query_posts('cat=2,3,7,19');
   }
?>

Böylece ana sayfada 2, 3, 7, ve 19. kategorilere ait yazıları listelemiş olduk.

Diyelim anasayfa da göstermek istemediğimiz bir kategorimiz var bunun için de şunu kullanabiliriz:

<?php
   if (is_home()) {
      query_posts('cat=-5');
   }
?>

Böylelikle ana sayfamızda 5. kategoriye ait yazılar görünmemiş olacak.

Dilersek yine ana sayfada :) istediğimiz bir yazının sabit bir biçimde görünmesini sağlayabiliriz.

<?php
   if (is_home()) {
      query_posts('p=7');
   }
?>

İstersek tarihe göre listeleme de yapabiliriz. Örneğin:

<?php query_posts('cat=3&year=2004&showposts=5'); ?>

3. kategoriye ait 2004 yılında yazılmış yazılardan 5 tanesini göster demiş oluyoruz böylece.

Parametreler

  • cat=3 - id’si 3 olan kategorideki yazılar
  • category_name=kategori adı - Adını girdiğiniz kategoriye ait yazılar
  • author_name=yazar adı - Adını girdiğiniz yazara ait yazılar
  • author=3 - id’sini girdiğiniz bir yazarın yazıları
  • p=1 - idsini girdiğiniz bir yazıyı göstermek
  • name=yazı adı - İstediğiniz bir yazıyı göstermek
  • page_id=7 - id’si 7 olan sayfayı gösterir
  • pagename=sayfa adı - Herhangi bir sayfayı göstermek için
  • showposts=10 - Girdiğiniz değer kadar yazı gösterilir
  • hour= - İstediğiniz bir saate ait yazılar
  • minute= - İstediğiniz dakikaya ait yazılar
  • second= - İstediğiniz saniyeye ait yazılar
  • day= - İstediğiniz bir güne ait yazılar
  • monthnum= - İstediğiniz aya ait yazılar
  • year= - İstediğiniz yıla ait yazılar
  • paged=2 - İkinci sayfaya ait yazılar
  • posts_per_page=10 - Sayfa başına kaç tane yazı gösterileceğini belirler. -1 değer tüm yazıları gösterir.
  • order=ASC - Yazıları eskiden yeniye doğru sıralar. DESC değeri yeniden eskiye doğru sıralar.

Bu parametreler ile değişik kombinasyonlar oluşturarak istediğiniz biçimi elde edebilirsiniz. Yalnız parametreler arasına & işaretini koymayı unutmayın ve bu kodları listelemenin başladığı

<?php if( have_posts() ) : ?>

satırının üstüne yerleştirmeyi de ihmal etmeyin.
Evet sevgili okuyucular gördük ki WordPress ile yapılabilecekler hayal gücümüz ile sınırlı. Bir başka National Geographic Çılgın CMS ler programında daha görüşmek üzere :P

Kaynaklar:

http://ifelse.co.uk/archives/2005/04/08/query_posts-redux/
http://codex.wordpress.org/Template_Tags/query_posts
http://codex.wordpress.org/The_Loop

5 Yorum var » Yorum ekle

  • 09.03.2007 - 6:17 pm #1

    çok güzel bir yazı olmuş ama o kadar denememe rahmen

    bunu yerleştirdiğimde sadece baştaki rakamdaki kategoriyi görüyor 3.7.19 hiç bir şekilde görmüyor :( acaba nerde yanlış yapıyorum yardımcı olurmusunuz ?

  • ertan
    09.07.2007 - 8:40 pm #2

    merhaba yazı çok güzel olmuş. bir şey sormak istiyorum. Yazılarımın bazıları iki kategoriye ait bu iki kategoriye ait olanları nasıl çekebiliriz. Ana stil bu sitedeki gibi olacak. http://www.fresheezy.com/gallery

  • 09.10.2007 - 6:49 pm #3

    1-2 Hafta kadar önce bu yazıyı okumuştum tekrar şnceleyip kullanmayı düşündüm :) 2 Gündür yer imlerimi alt üst ettim bugün buldum :) Çok güzel bi çalışma ;)

  • 09.12.2007 - 8:10 pm #4

    Teşekkür ederim :)

  • 09.27.2008 - 9:32 pm #5

    Çok işime yaradı. Özellikle category_name yerine cat kullanabilmem.
    Ancak şöyle bir sorunum var; Sitemde toplam 30 içerik var. Ana sayfada ise sadece 5 tanesi gözüküyor. Geriye kalıyor 25 tane. Kullandığım tüm temalarda durum şöyle; Toplam ilk üç sayfa boyunca site.com/page/3′e kadar sorun yok. Bu 3 sayfada toplam 15 tane konu gözüküyor benimse 15 konum daha var. Yani 3 sayfa daha olması gerekiyor. Ancak diğer sayfalarına girince 404 Bulunamadı hatası veriyor. Yaklaşık bir haftadır bu sorunla uğraşıp duruyorum. Acaba nasıl çözerim ?

Yorum Yaz







© 2008 Sevban.com / WordPress

ana sayfa | arşiv | download | portfolio | iletişim