Wordpress Sayfalama Fonksiyonu Nasıl Yapılır?

WordPress pagination fonksiyonu bazen yetersiz kalabiliyor. O yüzden beraber istediğimiz gibi müdahale edebileceğimiz WordPress pagination fonksiyonuna, yani WordPress sayfalama fonksiyonu‘na bakacağız. Ama önce ne işe yaradığını bir öğrenelim isterseniz.

Wordpress Pagination (Sayfalama) Nedir?

WordPress pagination fonksiyonunu size şu şekilde açıklayabilirim: Bir blog sitenizde yazıları alt alta listelendiği zaman, maksimum gösterim sayısına ulaştığında en altta daha eski yazıları görebilmeniz için 1 2 3 4 5 diye numaralandırılan bağlantıları görürsünüz. Buna sayfalama işlemi denir.

Bir sayfa başına maksimum gösterilecek yazı limitini şu adımları takip ederek değiştirebilirsiniz: Ayarlar > Okuma > En fazla gösterilecek blog sayfası adedi

Şimdi pagination(sayfalama) işlemi yapmak için yazmamız gerek koda geçebiliriz.

function the_pagination()
{
if (is_singular(){
return;
}
global $wp_query;

// Yalnızca 1 sayfa varsa yürütmeyi durdurur
if ($wp_query->max_num_pages <= 1) return;
$paged = get_query_var(‘paged’) ? absint(get_query_var(‘paged’)) : 1;
$max = intval($wp_query->max_num_pages);

// Geçerli sayfayı dizine ekle
if ($paged >= 1)
$links[] = $paged;

// Geçerli sayfanın etrafındaki sayfaları diziye ekle
if ($paged >= 3) {
$links[] = $paged – 1;
$links[] = $paged – 2;
}

if (($paged + 2) <= $max) {
$links[] = $paged + 2;
$links[] = $paged + 1;
}
echo ‘<div class=”navigation”><ul>’ . “\n”;

// Önceki Yazı Bağlantısı
if (get_previous_posts_link()) {
printf(‘<li>%s</li>’ . “\n”, get_previous_posts_link());
}

// İlk sayfaya bağlantı, artı gerekiyorsa elips
if (!in_array(1, $links)) {
$class = 1 == $paged ? ‘ class=”active”‘ : ”;
printf(‘<li%s><a href=”%s”>%s</a></li>’ . “\n”, $class, esc_url(get_pagenum_link(1)), ‘1’);

if (!in_array(2, $links)) {
echo ‘<li>…</li>’;
}
}

// Geçerli sayfaya bağlantı, gerekirse iki yönde de 2 sayfa
sort($links);
foreach ((array) $links as $link) {
$class = $paged == $link ? ‘ class=”active”‘ : ”;
printf(‘<li%s><a href=”%s”>%s</a></li>’ . “\n”, $class, esc_url(get_pagenum_link($link)), $link);
}

// Son sayfaya bağlantı, artı gerekiyorsa elipsler
if (!in_array($max, $links)) {
if (!in_array($max – 1, $links)) {
echo ‘<li>…</li>’ . “\n”;
}

$class = $paged == $max ? ‘ class=”active”‘ : ”;
printf(‘<li%s><a href=”%s”>%s</a></li>’ . “\n”, $class, esc_url(get_pagenum_link($max)), $max);
}

// Sonraki Yazı Bağlantısı
if (get_next_posts_link()) {
printf(‘<li>%s</li>’ . “\n”, get_next_posts_link());
}

echo ‘</ul></div>’ . “\n”;
}

Yukarıdaki kodları functions.php dosyamıza ekleyelim.

Son olarak bu kodları index.php dosyası içinde çağırmamız gerekiyor. Bunun için de eklemek istediğiniz yeri belirledikten sonra aşağıdaki gibi fonksiyonun adını yazmanız yeterli:

<?php the_pagination(); ?>

Yorum yapın