İçeriğe geçmek için "Enter"a basın

Özel sayfa şablonu içerisinde sayfalama yapmak

Tema geliştiricilerinin bazen içinden çıkamadığı durumlardan birisidir. Bir örnek senaryo olarak anasayfa tasarımı bağımsız olan bir temada tüm yazıların listelendiği ayrı bir sayfa istenmesi ve bu sayfada sayfalama yapılmasının istenmesi diyebiliriz.

Bu noktada WordPress Doktoru yardımınıza yetişiyor ve sizi düşünmekten kurtarıyor. Bu yapı ile sorunsuz bir şekilde sabit sayfalar içerisinde belirli bir yazı tipine ait içerikleri sayfalayarak gösterebilirsiniz.

İlk olarak sayfa şablonumuz içerisinde kullanacağımız örnek döngü yapısını inceleyelim.

<?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array(
/* Post Tipi */
'post_type'=> 'post',
/* Sayfa başına gösterilecek yazı sayısı */
'posts_per_page' => 12,
/* Query sayfalamasını tanımlıyoruz */
'paged' => $paged
);
$query = new WP_Query( $args );
while( $query->have_posts() ) : $query->the_post();
/* Yazı Başlığı vs. döngü içeriği */
endwhile; 
sayfalama($query->max_num_pages); wp_reset_query(); ?>

Bu sabit sayfamız içerisinde kullanacağımız döngü örneğidir. Bu örneği tasarıma uygulama kısmı tabikide size kalıyor, zaten çok zor bir şey değil. Gelelim functions.php dosyasına ekleyeceğimiz kodlara..

function sayfalama($max = '', $pages = '', $range = 3)
{
$showitems = ($range * 2)+1;
global $paged;
if(empty($paged)) $paged = 1;
if($pages == '')
{
global $wp_query;
$pages = $max;
if(!$pages)
{
$pages = 1;
}
}
if(1 != $pages)
{
echo "<div class='pagination'><ul>";
echo "<li>Diğer Haberler</li>";

for ($i=1; $i <= $pages; $i++)
{
if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems ))
{
echo ($paged == $i)? "<li class='active'><a>".$i."</a></li>":"<li><a href='".get_pagenum_link($i)."'>".$i."</a></li>";
}
}
echo "<li><a href='".get_pagenum_link(1)."'>İlk Sayfa</a> / <a href='".get_pagenum_link($pages)."'>Son Sayfa</a></li>";
if ($paged > 1) echo "<li><a href='".get_pagenum_link($paged - 1)."' class='prev'></a></li>";
if ($paged < $pages && $showitems > $pages) echo "<li><a href='".get_pagenum_link($paged + 1)."' class='next'></a></li>";

echo "</ul></div>";
}
}

ve işlemimiz tamamdır. Bundan sonrasında css ile ufak dokunuşlar yaparak sayfalamanızı daha güzel bir şekilde gösterebilirsiniz. Eğer takıldığınız bir konu olur ise yorum olarak belirtebilirsiniz.

WordPress Doktorunuz yanınızda 🙂

İlk yorum yapan siz olun

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir