Code phân trang không cần plugin cho wordpress
Đầu tiên các bạn cho đoạn code này vào file functions.php:
//Code phan trang function devvn_wp_corenavi($custom_query = null, $paged = null) { global $wp_query; if($custom_query) $main_query = $custom_query; else $main_query = $wp_query; $paged = ($paged) ? $paged : get_query_var('paged'); $big = 999999999; $total = isset($main_query->max_num_pages)?$main_query->max_num_pages:''; if($total > 1) echo '<div class="pagenavi">'; echo paginate_links( array( 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), 'format' => '?paged=%#%', 'current' => max( 1, $paged ), 'total' => $total, 'mid_size' => '10', // Số trang hiển thị khi có nhiều trang trước khi hiển thị ... 'prev_text' => __('Prev','devvn'), 'next_text' => __('Next','devvn'), ) ); if($total > 1) echo '</div>'; }
Rồi sau đó các bạn cho đoạn code này vào chỗ bạn muốn hiển thị phân trang:
<?php if (function_exists('devvn_wp_corenavi')) devvn_wp_corenavi(); ?>
Chú ý: Nếu muốn phân trang tại custom wp_query thì chúng ta chèn code phân trang như sau:
$news = new WP_Query($args);
if($news->have_posts()):
while ($news->have_posts()):$news->the_post();
//nội dùng hiển thị
endwhile;
//code phân trang
if (function_exists('devvn_wp_corenavi')) devvn_wp_corenavi($news);
endif; wp_reset_query();
Cuối cùng các bạn dùng css để định dạng nó theo ý mình thôi.
Còn mình cho css như hình trên. Các bạn có thể tham khảo:
.pagenavi{ margin: 20px 0 20px 0; } .pagenavi span,.pagenavi a{color: #4d4d4d;padding:3px;margin-right:5px;background:transparent;border:1px solid #757575} .pagenavi a:hover,.pagenavi .current{background:transparent;color:#4d4d4d;text-decoration:none} .pagenavi .page-numbers,.pagenavi .current{color: #4d4d4d;font-weight:bold} .pagenavi .current{color: red;} .pagenavi .page-numbers{border:1px solid #DDD;padding: 8px; border-radius: 8px;}