WordPress’te plugin kullanmadan pagination yapma

Önceki yazılarımı okuyanlar WordPress’te gereğinden fazla plugin kullanmayı sevmediğimi ve tavsiye etmediğimi bilirler.
Bu yüzden sitenizdeki arşiv sayfalarında, sayfalama için kullanmak isteyeceğiniz pagination’ı da plugin olmadan yapalım istedim.

Öncelikle temanızın functions.php dosyasını açın ve aşağıdaki fonksiyonu ekleyin.

function pagination($pages = '', $range = 4)
{
    $showitems = ($range * 2)+1;

    global $paged;
    if(empty($paged)) $paged = 1;

    if($pages == '')
    {
        global $wp_query;
        $pages = $wp_query->max_num_pages;
        if(!$pages)
        {
            $pages = 1;
        }
    }

    if(1 != $pages)
    {
        echo "<ul class=\"pagination\">";
        if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>&laquo; İlk Sayfa</a>";
        if($paged > 1 && $showitems < $pages) echo "<li><a href='".get_pagenum_link($paged - 1)."'>&lsaquo; Önceki</a></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 href=\"#\">".$i."</a></li>":"<li><a href='".get_pagenum_link($i)."' class=\"inactive\">".$i."</a></li>";
            }
        }

        if ($paged < $pages && $showitems < $pages) echo "<li><a href=\"".get_pagenum_link($paged + 1)."\">Sonraki &rsaquo;</a></li>";
        if ($paged < $pages-1 &&  $paged+$range-1 < $pages && $showitems < $pages) echo "<li><a href='".get_pagenum_link($pages)."'>Sonuncu &raquo;</a></li>";
        echo "<span class='page-info'>Sayfa ".$paged." - ".$pages."</span>";
        echo "</ul>\n";
    }
}

Bu fonksiyonun üreteceği html Bootstrap’in pagination yapısına uygundur. Siz isterseniz farklı classlar verebilirsiniz.

Sonrasında arşiv sayfanızı açarak (archive.php veya temanızda kategoriye göre farklılık gösteren video-archive.php de olabilir) aşağıdaki kodu yazıların listelendiği loop’un altına ekleyin.

<?php if (function_exists("pagination")) {
                            pagination($additional_loop->max_num_pages);
                        } ?>

Ve pagination hazır 🙂

Yazının başında bahsettiğim gibi class veya CSS düzenlemeleri yaparak pagination’ı kendi sayfanızın görsel kimliğine uyarlayabilirsiniz.