WordPress Kategori Sayfasında Pagination ( Sayfalama ) Yapımı


WordPress tabanlı siteler bir çok şeyi eklentiler ile yapabiliyoruz fakat biliyorsunuz ki gereksiz eklenti kullanımı sitemizi biraz daha yormaktadır o yüzden kod ile yapabileceğimiz şeyleri eklenti ile yapmazsak bizim için daha sağlıklı olacaktır.

Pagination ( Sayfalama ) sistemi sitemizde yüzlerce içeriği tek bir sayfada göstermeden sayfalama mantığı ile her sayfaya belirlediğimiz miktarda içerik yerleştirerek gösterebileceğimiz yöntemdir.

Bu konumuzda category.php sayfalarında Pagination ( Sayfalama ) sistemi yapımından bahsedeceğiz.

İlk olarak category.php sayfamızda içerikleri listelemek için aşağıdaki kullanabiliriz tabi kendi geliştirdiğiniz bir kod varsa onuda kullanabilirsiniz.

<?php
  $currCat = get_category(get_query_var('cat'));
  $cat_name = $currCat->name;
  $cat_id   = get_cat_ID( $cat_name );
  $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
  $wp_query = new WP_Query('showposts=10&post_type=post&paged='.$paged.'&cat='.$cat_id);
  while ($wp_query->have_posts()) : $wp_query->the_post();
?>

/* Bu alanda içeriklerimiz yer alacak */

<?php endwhile; wp_reset_postdata(); ?>

Kategori sayfamızı tasarladığımızı düşünüyorum ve artık sayfalama sistemine ihtiyacımız var.

Aşağıdaki kodu temanızda yer alan functions.php dosyasına yerleştirin.

function sdc_pagination() {
  ob_start();
  ?>
  <div class="pages clearfix">
    <?php
    global $wp_query;
    $current = max( 1, absint( get_query_var( 'paged' ) ) );
    $pagination = paginate_links( array(
      'base' => str_replace( PHP_INT_MAX, '%#%', esc_url( get_pagenum_link( PHP_INT_MAX ) ) ),
      'format' => '?paged=%#%',
      'current' => $current,
      'total' => $wp_query->max_num_pages,
      'type' => 'array',
      'prev_text' => '&laquo;',
      'next_text' => '&raquo;',
    ) ); ?>
    <?php if ( ! empty( $pagination ) ) : ?>
      /* Buraya kendi pagination başlangıç kodunuzu yazın */
      <ul class="pagination">
        <?php foreach ( $pagination as $key => $page_link ) : ?>
          /* Buraya kendi paginationda tekrar eden kodunuzu yazın */
          <li class="paginated_link<?php if ( strpos( $page_link, 'current' ) !== false ) { echo ' active'; } ?>"><?php echo $page_link ?></li>
        <?php endforeach ?>
      </ul>
      /* Buraya kendi pagination bitiş kodunuzu yazın */
    <?php endif ?>
  </div>
  <?php
  $links = ob_get_clean();
  return apply_filters( 'sdc_pagination', $links );
}

Örnek olarak aşağıdaki gibi kullanabilirsiniz.

<?php echo sdc_pagination(); ?>

Örnek görüntüsüne aşağıdaki resime bakabilirsiniz.

Konu İle İlgili Soru, Görüş ve Öneriler


Soru, Görüş ve Önerileriniz için Yazın!