Get_posts ile Sayfalama (pagination)

WordPress’te normal while döngüsünün dışına çıkıldığında genelde sayfalama ile ilgili sorunlar ortaya çıkar. while döngünüsünden önce query_posts(); kullandığınızda sayfalama sorununu nasıl çözebileceğinizi şurada daha önce anlatmıştım. Bazı durumlarda da foreach döngüsünü kullanarak get_posts(); ile yazılarımızı çekmemiz gerekiyor. Bu durumda get_posts’un parantezleri arasına ne girerseniz hangi sayfaya gidilirse gidilsin o şekilde yazıları çekiyor. Yani örneğin 5 numaralı kategoriden 10 tane yazı çekmek için

get_posts( array( “category” => 5, “numberposts” => 10) );

diyorsak 6. sayfaya da geçsek hep 5nolu kategoriden ilk 10 yazıyı çekecektir.

Peki bunu nasıl düzeltiriz?

Öncelikle kaçıncı sayfada olduğumuzu ve panelden sayfa başı kaç yazı gösterilmesi ile ilgili değerleri çekelim. Daha sonra sayfa sayısı ile sayfada kaç yazı gösterildiğini çarparak çıkan sonucu offset değeri olarak döngüye vereceğiz. Böylece sistem 5. sayfadaysa ondan önce bulunan 40 yazıyı atlayacak ve 40-50 arası yazıları karşımıza çıkartacak.

<?php $kac = get_option('posts_per_page'); // wp-admin > ayarlar > okunma değeri 
$cat_id = get_query_var('cat'); // bulunduğumuz kategorinin IDsi
$offset = ($paged-1)*$kac; // offset değeri olarak $kac olarak çektiğimiz değeri sayfalamanın 1 eksiği ile çarptık

$degerler = array(
"category" => $cat_id,
"offset" => $offset,
"numberposts" => $kac
);
$fors = get_posts($degerler);

foreach( $fors as $post ) :    
setup_postdata($post);

// post tarzini buraya girin
// ornegin the_title();

endforeach;
?>

Anlatmayı bırakıp kodlara girdikten sonra bazı yerleri hızlı geçmiş olabilirim. Yorum yaparak soru sormaktan çekinmeyin.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir