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

Bu yazıda, WordPress'te sayfalama fonksiyonunu nasıl oluşturduğumuzu anlattım.

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.

WordPress Pagination (Sayfalama) Fonksiyonu

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(); ?>

Leave a Reply