Phân trang cho một website là điều khá là quan trọng, bởi khi số lượng bài hiển thị vượt quá giới hạn cho phép theo cấu hình “Đọc” trong trang quản trị của website thì bạn cần phải phân trang cho website để người truy cập có thể sang các trang tiếp theo để coi các bài viết cũ.
Chính vì vấn đề phân trang pagination mà wordpress đã cung cấp cho chúng ta các hàm có sẵn giúp cho lập trình viên thuận tiện trong việc viết plugins, themes. Ngoài việc phân trang giúp người dùng dễ tìm kiếm chuyển trang sang trang tiếp theo để đọc bài viết cũ mà nó còn giúp cho con bọ của google hay bất kỳ công cụ tìm kiếm nào cũng dễ dàng đi sâu vào website của bạn để lập chỉ mục.
Nếu như các bạn chưa biết cách tạo phân trang trong wordpress thì ở bài này Thịnh chia sẻ cách xử lý với các bạn để bạn có cái nhìn đơn giản về quá trình tạo phân trang trong wordpress. Tuy nhiên ở bài sau mình sẽ chia sẻ cách dùng plugins để tạo phân trang thuận tiện hơn mà cũng đẹp hơn.
Trước tiên để tạo phân trang bạn cần thiết lập cho nó một hàm mới với tên gọi của bạn.
// Ham tao phan trang if (!function_exists( 'thinhweb_pagination' )){ function thinhweb_pagination(){ if ( $GLOBALS['wp_query']->max_num_pages <2 ){ return ''; } ?> <nav class="pagination" role="navigation"> <?php if ( get_next_posts_link() ) : ?> <div><?php next_posts_link( __('Older Posts', 'thinhweb') ); ?></div> <?php endif; ?> <?php if ( get_previous_posts_link() ) :?> <div ><?php previous_posts_link(__('Newest Posts', 'thinhweb') ); ?></div> <?php endif; ?> </nav> <?php } }
Ý nghĩa cụ thể của đoạn code trên như sau.
- Khai báo function: thinhweb_pagination.
- Kiểm tra nếu $GLOBALS[‘wp_query’] mà được gán bằng với max_num_pages và nhỏ hơn 2 thì nó sẽ quay (return) trở lại không thực thi lệnh tiếp theo.
- Nếu nó mà bằng hoặc lớn hơn 2 thì bắt đầu thực hiện lệnh phía dưới.
- Tiếp theo sẽ là kiểm tra tính tồn tại của “get_next_posts_link” và “get_previous_posts_link” thì sẽ thực thi hiển thị “next_posts_link” và “previous_posts_link” theo tên của bạn và phải theo textdomain mà bạn khai báo trong file style.css.
Sau khi bạn đã có hàm tạo phân trang do bạn viết ra thì bạn cần phải cho nó hiển thị ra ngoài.
Ví dụ
<?php if ( have_posts() ) : while( have_posts() ) : the_post(); ?> // code gọi nộ dùng của vòng lặp while <?php endwhile ?> <?php thinhweb_pagination(); ?>
Bạn đặt nó ngay sau khi kết thúc vòng lặp while như ví dụ ở trên. Như vậy tại đây sau danh sách các bài viết nó sẽ hiển thị phần phân trang. Ngoài ra bạn cũng có thể đặt trước vòng lặp while theo cách trình bày của bạn.
Đó là cách làm phân trang bằng text thay vì bằng số. Ở bài sau mình sẽ hướng dẫn các bạn làm phân trang bằng chữ số.