Khi ở trang lưu trữ, chắc hẳn các bạn gặp không ít khó khăn trong việc phân trang hoặc cố gắng loay hoay nhưng không được. Bài viết này mình sẽ hướng dẫn đầy đủ nhất các trường hợp phân trang ở các page hay archive, single,.. Còn về phân trang bằng Load Ajax mình sẽ viết ở bài sau.
Phân trang ở trang lưu trữ
Vậy thế nào là trang lưu trữ? Trang lưu trữ là các trang phân loại bài viết như category, tag, custom taxonomy,…
archive.php : Định dạng hiển thị cho toàn bộ trang lưu trữ trên website như lưu trữ theo ngày tháng, category, tag, custom taxonomy,..
category.php – Định dạng hiển thị cho toàn bộ category của website.
category-tin-tuc.php – Định dạng hiển thị trang category có slug là tin-tuc.
category-123.php – Định dạng hiển thị cho category mang ID 123.
tag.php – Định dạng hiển thị toàn bộ tag của website.
tag-tin-tuc.php – Định dạng hiển thị toàn bộ tag có slug là tin-tuc.
tag-123.php – Định dạng hiển thị toàn bộ tag có ID là 123.
author.php – Định dạng hiển thị cho trang toàn bộ các tác giả trong website.
author-tilu.php – Định dạng trang hiển thị tác giả tên tilu.
author-123.php – Định dạng trang hiển thị tác giả có ID là 123.
archive-product.php – Định dạng trang hiển thị danh sách các bài viết thuộc post type tên product.
taxonomy-product-category.php – Định dạng trang hiển thị danh sách các bài viết thuộc custom taxonomy tên product-category.
Phân trang ở trang lưu trữ thường rất đơn giản, bạn có thể xem qua một cấu trúc template lưu trữ bình thường:
<?php
/**
* The template for displaying archive pages
*
* @link https://developer.wordpress.org/themes/basics/template-hierarchy/
*
* @package ws247
*/
get_header();
?>
<div id="primary" class="content-area">
<main id="main" class="site-main">
<?php if ( have_posts() ) : ?>
<header class="page-header">
<?php
the_archive_title( '<h1 class="page-title">', '</h1>' );
the_archive_description( '<div class="archive-description">', '</div>' );
?>
</header><!-- .page-header -->
<?php
/* Start the Loop */
while ( have_posts() ) :
the_post();
/*
* Include the Post-Type-specific template for the content.
* If you want to override this in a child theme, then include a file
* called content-___.php (where ___ is the Post Type name) and that will be used instead.
*/
get_template_part( 'template-parts/content', get_post_type() );
endwhile;
the_posts_navigation();
else :
get_template_part( 'template-parts/content', 'none' );
endif;
?>
</main><!-- #main -->
</div><!-- #primary -->
<?php
get_footer();
Sau khi kết thúc vòng lặp while, ta có thể đẩy ngay the_posts_navigation() vào để phân trang, đây là hàm WordPress hỗ trợ sẵn và khá tiện dụng, chỉ việc chỉnh css tí là sẽ dùng được. Để hiểu sâu hơn về the_posts_navigation(), bạn có thể xem đoạn function sau đây:
Vậy số bài viết muốn phân trang thì chỉnh ở đâu? Các bạn có thể vào quản trị theo đường dẫn sau để thay đổi:
Cài đặt -> Đọc
Số bài viết ở mỗi trang là 10
Phân trang ở các trang (page) hay bài viết (single)
Có thể bạn đã biết, khi ở trang archive, chúng ta chỉ việc dùng hàm if while để gọi được bài viết, nhưng lý do tại sao lại vậy thì bạn có thể hiểu nôm na rằng, tại trang lưu trữ đã có xuất hiện query_posts( array|string $query ). Do vậy, để có thể dùng if while trong trang trang (page) hay bài viết (single), chúng ta phải xét điều kiện gọi post-type, số lượng bài viết,… với WP_Query.
.giniit-pagination {
margin-top: 30px;
text-align: right;
}
.giniit-pagination ul span,.giniit-pagination ul a{
display: inline-block;
font-size: 14px;
color: #666666;
text-align: center;
border: 1px solid #ccc;
padding: 10px 10px;
transition: all .3s;
}
.giniit-pagination ul a:hover,.giniit-pagination ul span {
color: #fff;
background-color: #ae1c3f;
}
Chúng ta sẽ có như sau:
Đây là hướng dẫn cơ bản về phân trang dạng paged, cả 2 cách trên khá đơn giản nhưng đối với mình khá là tiện lợi, theo một cách nào đó, mình không đánh giá cao ajax lắm. Ở bài viết tới, mình sẽ hướng dẫn bạn cách viết phân trang bằng ajax. Có vấn đề gì chưa hiểu, các bạn có thể comments bên dưới nhé
Khi bạn đăng nhập lần đầu tiên bằng nút Đăng nhập Xã hội, chúng tôi thu thập thông tin hồ sơ công khai tài khoản của bạn được chia sẻ bởi nhà cung cấp Đăng nhập Xã hội, dựa trên cài đặt quyền riêng tư của bạn. Chúng tôi cũng nhận được địa chỉ email của bạn để tự động tạo tài khoản cho bạn trong trang web của chúng tôi. Khi tài khoản của bạn được tạo, bạn sẽ đăng nhập vào tài khoản này.
Không đồng ýĐồng ý
Kết nối với
Tôi cho phép tạo tài khoản
Khi bạn đăng nhập lần đầu tiên bằng nút Đăng nhập Xã hội, chúng tôi thu thập thông tin hồ sơ công khai tài khoản của bạn được chia sẻ bởi nhà cung cấp Đăng nhập Xã hội, dựa trên cài đặt quyền riêng tư của bạn. Chúng tôi cũng nhận được địa chỉ email của bạn để tự động tạo tài khoản cho bạn trong trang web của chúng tôi. Khi tài khoản của bạn được tạo, bạn sẽ đăng nhập vào tài khoản này.
Không đồng ýĐồng ý
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận
Tôi đã may mắn vì tôi không bao giờ từ bỏ việc tìm kiếm. Rất vui nếu bạn tìm được thông tin từ Gini Webseo.