Cách phân trang trong WordPress không cần plugin

Tiếp tục nói về vấn đề phân trang trong wordpres, ở bài trước mình có chia sẽ cho các bạn phân trang trong wordpress với plugin WP PageNavi, nhưng nếu bạn không thích sử dụng plugin thì hãy tham khảo bài viết này của mình. Mặc định trong WordPress không có đánh số trang nếu nhưng website của bạn có nhiều bài viết và số trang ngày càng nhiều thì rất cần đánh số trang để độc giả dễ dàng chuyển trang theo ý muốn từ đó tăng tỉ lệ Pageview cho website điều này có lợi cho SEO.

wordpress-pagination

Sau đây mình sẽ hướng dẫn các bạn cách tạo Numeric Pagination trong WordPress cực kỳ dễ dàng.

Hướng dẫn phân trang wordpress không sử dụng Plugin

# Đầu tiên mở file functions.php và thêm đoạn code dưới đây vào cuối file (nhớ thêm trước ?> nhá):

function page_nav() {
 if( is_singular() )
 return;
 global $wp_query;
 /** Stop execution if there's only 1 page */
 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 );
 /** Add current page to the array */
 if ( $paged >= 1 )
 $links[] = $paged;
 /** Add the pages around the current page to the array */
 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";
 /** Previous Post Link */
 if ( get_previous_posts_link() )
 printf( '<li>%s</li>' . "n", get_previous_posts_link() );
 /** Link to first page, plus ellipses if necessary */
 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>';
 }
 /** Link to current page, plus 2 pages in either direction if necessary */
 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 );
 }
 /** Link to last page, plus ellipses if necessary */
 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 );
 }
 /** Next Post Link */
 if ( get_next_posts_link() )
 printf( '<li>%s</li>' . "n", get_next_posts_link() );
 echo '</ul></div>' . "n";
 }

# Tiếp theo mình cần trang trí Pagination của mình cho nó lung tinh tí, hehe, cái này bạn thích edit thế nào thì edit, miễn là bạn thích là được:

.navigation li a,
 .navigation li a:hover,
 .navigation li.active a,
 .navigation li.disabled {
 color: #fff;
 text-decoration:none;
 }
.navigation li {
 display: inline;
 }
.navigation li a,
 .navigation li a:hover,
 .navigation li.active a,
 .navigation li.disabled {
 background-color: #6FB7E9;
 border-radius: 3px;
 cursor: pointer;
 padding: 12px;
 padding: 0.75rem;
 }
.navigation li a:hover,
 .navigation li.active a {
 background-color: #3C8DC5;
 }

# Việc cuối cùng ta cần làm là ta mang cái cục Pagination đó bỏ vào nơi mà chúng ta cần hiển thị:

<?php page_nav(); ?>

Sau các bước trên, bạn sẽ có một thanh phân trang độc đáo cho blog của bạn. Chúc các bạn thành công nhá!

Cách phân trang trong WordPress không cần plugin 4.50/5 (90.00%) 8 votes

Hãy bình luận, góp ý bằng Disqus để được hồi đáp nhanh hơn!
Sử dụng Facebook hoặc Google nếu không load được Disqus

Nhận nhiều thông tin bổ ích và quà tặng hấp dẫn
từ MELYWEB

Theo dõi blog MELYWEB để nhận được các tin tức bổ ích, khuyến mãi mới nhất, các quà tặng hấp dẫn.