22 Haziran 2018 993 Views

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";
 
}

Son olarak bu kodları index.php dosyası içinde çağırmamız gerekiyor. Bunun için de eklemek istediğiniz yeri belirledikten sonra yazmanız gerek kodu veriyorum.

<?php the_pagination(); ?>
[Toplam:4    Ortalama:4.8/5]

Sorry, no related articles to display.

2 Comments

Onur
9 Temmuz 2018 at 17.08

Kodlarındaki & lt ; & gt ; gibi değişik kodları fark etmedin mi? Bence ya kopyalarken hata yapıyorsun, ya da eklentinde bir hata var. Düzeltmeni öneririm yoksa bu şekilde çok uğraştırır insanı. Teman güzel ama keşke ücretli olsaymış. Bu güzelim temaya yazık olmuş. 🙂

    Oğuzhan Yılmaz
    9 Temmuz 2018 at 23.31

    Evet onları yazdıktan sonra editöre kopyalayınca o şekilde çıkmış. Hemen düzeltiyorum, teşekkürler 🙂

Write a Comment

Pin It on Pinterest