Với mục tiêu dựa trên WordPress để xây dựng một theme blog cơ bản, chúng ta đã đi được 2/3 chặng đường rồi. Hôm nay, công việc của các bạn sẽ là tự mình xây dựng các trang để hiển thị danh mục bài viết và hiển thị nội dung của một bài viết bất kỳ.
Với lượng kiến thức tích lũy trong 6 bài trước, tôi tin các bạn đã có đủ kiến thức để có thể tự mình tiếp tục. Do đó, trong bài viết này, tôi sẽ chỉ đưa ra gợi ý thay vì hướng dẫn chi tiết như trong các bài trước.
Phân tích vấn đề
Xác định template file
Đầu tiên, các bạn cần phải xác định được, với danh mục, bài viết chúng ta sẽ sử dụng template file nào hợp lý nhất với mục đích của chúng ta. Liệt kê ra những lựa chọn và chọn phương án tối ưu nhất.
Hình dung vấn đề
Vấn đề chính vẫn liên quan đến dữ liệu được trích xuất từ cơ sở dữ liệu. Và điều may mắn nhất là cả trang danh mục và bài viết đều đã được WordPress truy xuất sẵn dữ liệu posts do đó, chúng ta có thể sử dụng trực tiếp vòng lặp (the loop) tương tự ở bài số 6 mà không cần có bước truy vấn.
Các hàm tiện ích của WordPress
Để tránh bỡ ngỡ cho các bạn, tôi sẽ liệt kê danh sách tên các hàm tiện ích của WordPress cung cấp sẵn. Các bạn có thể tra cứu và học cách sử dụng chúng. Các hàm này các bạn đã sử dụng qua, nên tôi tin chắc, chúng không thể làm khó các bạn
next_post_link()
previous_post_link()
the_category()
the_author()
the_content()
the_excerpt()
the_ID()
the_meta()
the_shortlink()
the_tags()
the_title()
the_time()
Mã nguồn tham khảo
Đây là phần tiếp tục của tôi về trang blog ẩm thực, mã nguồn và hình ảnh thu được. Hi vọng các bạn chỉ cần đến nó với mục đích tham khảo và so sánh với code của các bạn.
Danh mục bài viết
File archive.php
<?php get_header(); ?>
<div class="container py-4">
<?php
the_archive_title( '<h1 class="archive-page-title text-primary text-center mb-3">', '</h1>' );
?>
<?php
if (have_posts()):
while (have_posts()):
the_post();
?>
<div class="row home-newpost">
<div class="col-12 col-lg-4 col-xl-3">
<div class="home-newpost--thumbnail">
<a href="<?= the_permalink(); ?>">
<?php the_post_thumbnail() ?>
</a>
</div>
</div>
<div class="col-12 col-lg-8 col-xl-9">
<h3 class="home-newpost--title">
<a href="<?= the_permalink(); ?>">
<?= the_title(); ?>
</a>
</h3>
<div class="home-newpost--meta mb-20">
Danh mục: <?= the_category(); ?> <br>
</div>
<div class="home-newpost--excerpt">
<?= the_excerpt(); ?>
</div>
</div>
</div>
<?php
endwhile;
echo paginate_links();
else :
?>
<div class="no-post text-center">
<h3 class="text-danger">Chưa có bài viết tại chuyên mục này, bạn vui lòng quay lại sau!</h3>
<a class="btn btn-primary" href="<?= home_url() ?>">Trang chủ</a>
</div>
<?php
endif;
?>
</div>
<?php get_footer(); ?>

Trang bài viết
File single.php
<?php get_header(); ?>
<div class="container py-4">
<?php
while (have_posts()):
the_post();
?>
<h1 class="archive-page-title text-primary text-center mb-3"><?= the_title() ?></h1>
<div class="post-meta mb-3">
<div class="published_at">Đăng lúc: <?= the_date('m-d-Y') ?></div>
<?php if (get_the_category()): ?>
<div class="categories">Danh mục: <?= the_category(); ?></div>
<?php endif; ?>
<?php if (get_the_tags()): ?>
<div class="tags">Tags: <?= the_tags( '<ul><li>', '</li><li>', '</li></ul>' ); ?></div>
<?php endif; ?>
</div>
<div class="post-content">
<?= the_content() ?>
</div>
<?php
endwhile;
?>
</div>
<?php get_footer(); ?>
Chúc các bạn thành công.