Code phân trang không cần plugin cho wordpress

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