Thêm phân trang trong WordPress rất dễ dàng bằng cách chỉ cần thêm các nút tiếp theo và trước đó bằng cách sử dụng phân trang WordPress nhưng làm thế nào chúng ta có thể thêm phân trang số trong vòng lặp?

Đầu tiên chúng ta cần tạo một hàm để phân trang số tùy chỉnh bên trong một vòng lặp thông thường. Hàm này có biến toàn cục và biến wp_query. Ngoài ra, chúng tôi sẽ sử dụng chức năng paginate_links trong WordPress


function hdev_custom_numeric_pagination( $number_pages = '', $page_range = '', $paged = '') {
  if (empty($page_range)) {
    $page_range = 2;
  }

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

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

  $pagination_args = array(
    'base' => get_pagenum_link(1) . '%_%',
    'format' => 'page/%#%',
    'total' => $number_pages,
    'current' => $paged,
    'show_all' => false,
    'end_size' => 1,
    'mid_size' => $page_range,
    'prev_next' => true,
    'prev_text' => __('«'),
    'next_text' => __('»'),
    'type' => 'plain',
    'add_args' => false,
    'add_fragment' => ''
  );
  $paginate_links  = paginate_links($pagination_args);
  
  if ($paginate_links) {
    echo '<div class="hdev-pagination-wrap">';
    echo "<nav class='hdev-custom-pagination'>";
    echo "<span class='page-numbers page-num'>Page " . $paged . " of " . $number_pages . "</span> ";
    echo $paginate_links;
    echo "</nav>";
    echo '</div>';
  }
}

Bạn có thể thêm function vào 1 look

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
  'post_type'   => 'post',
  'posts_per_page'  => 8,
  'paged' => $paged,
  'order' => 'DESC', 
  'orderby' => 'date'
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post();
  echo get_the_title().'<br />';
endwhile;
hdev_custom_numeric_pagination($the_query->max_num_pages, "", $paged);
endif;
wp_reset_postdata();

Nếu bài viết hữu ích hãy đánh giá bài viết:

5/5 (1 Review)

Trả lời

Email của bạn sẽ không được hiển thị công khai.

0866071057