Bazı durumlarda, WordPress döngüsünü birden çok kez kullanmak isteyebilirsiniz. Mesela, sayfanızın üst kısmında, yazdığınız yazıların başlıklarını verip, altında da yazınızı veya sayfanızı yayınlamak isteyebilirsiniz. Bunu yapabilmek için, iki döngü arasına, ya rewind_posts()
fonksiyonunu ya da wp_reset_postdata()
fonksiyonunu yerleştirmeniz gerekmektedir.
rewind_posts() Kullanımı
Eğer aynı döngüyü ikinci bir defa kullanmak isterseniz, iki döngü arasına bu fonksiyonu yazmalısınız. Bu fonksiyon, döngüyü başa sarar ve ikinci döngünün baştan başlamasını mümkün kılar.
Aşağıda, rewind_posts()
fonksiyonunun kullanımına bir örnek verilmiştir:
// Ana döngüyü başlat
<?php
if ( have_posts() ) : while ( have_posts() ) : the_post();
the_title();
endwhile;
endif;
// rewind_posts() fonksiyonunu kullan ve döngüyü ikinci defa başlat.
rewind_posts();
// Döngüyü tekrar başlatıyoruz
while ( have_posts() ) : the_post();
the_content();
endwhile;
?>
wp_reset_postdata() Kullanımı
Aynı döngüyü kullanmak oldukça basit bir iştir fakat her zaman ihtiyacımız olan şey bu olmayabilir. Bunun yerine, birbirinden farklı iki döngü kurmak isteyebiliriz. İşte böyle durumlarda da, farklı dögüler arasına wp_reset_postdata()
fonksiyonunu yerleştirmeniz gerekmektedir.
Mesela, bir yazınızı yayınlarken, yazının altına, belli bir kategorideki yazılarınızın da bir listesini vermek isteyebilirsiniz. İşte aşağıda tam da bu işlemi yapan bir örnek verilmiştir:
<?php
// Ana sorgu.
if ( have_posts() ) : while ( have_posts() ) : the_post();
the_title();
the_content();
endwhile;
else :
// İçeriğiniz yoksa bu mesajı ver.
_e( 'Üzgünüm, aradığınız kriterlerlere uygun bir sonuç bulunamadı.' );
endif;
wp_reset_postdata();
/*
* İkinci sorgu. Burada istediğiniz bir kategori ismi kullanabilirsiniz,
* bizim seçimimiz "ornek-kategori" oldu.
*/
$ikinci_sorgu= new WP_Query( 'category_name=ornek-kategori' );
// İkinci döngü...
if ( $ikinci_sorgu->have_posts() )
echo '<ul>';
while ( $ikinci_sorgu->have_posts() ) :
$ikinci_sorgu->the_post();
echo '<li>' . get_the_title() . '</li>';
endwhile;
echo '</ul>';
endif;
wp_reset_postdata();
?>
Eğer standart bir sorgu yerine, sadece belli özellikleri taşıyan içeriklerinizi çağıracaksanız, WP_Query()
sınıfının bir örneğini oluşturabilirsiniz. WP_Query()
örneğini oluştururken, döngünün ayrıntılarını argüman olarak girmelisiniz. Yukarıdaki örnekte, tek bir argüman kullandık ve bu argümanda da döngünün “ornek-kategori
” kategorisindeki yazıları getirmesini istedik.
Yukardaki standart döngünün sonunda, wp_reset_postdata()
fonksiyonunu çağırdığımıza dikkat ediniz. Çünkü sorguya reset atıp ikinci bir sorgu başlatmak istedik.
Yine WP_Query()
ile oluşturduğumuz özel döngünün sonunda da wp_reset_postdata()
fonksiyonunu çağırdığımıza dikkat ediniz. Çünkü, böyle özel döngülerin sonunda da, wp_reset_postdata()
fonksiyonunu çağırmak sağlıklı bir alışkanlıktır.
1 yorum: “2.9 WordPress Döngüsünün Tekrar Kullanımı”