Ở trong phần này mình sẽ hướng dẫn bạn category.php, page.php, search.php, archive.php, 404.php
page.php // show thông tin chi tiết của 1 trang
search.php // show kết quả tìm kiếm
category.php // show bài viết theo danh mục
404.php // show thông báo lỗi nếu bài viết hoặc chủ đề không tồn tại
archive.php // show các bài viết lưu trữ theo ngày giờ
Category.php
Tạo file category.php
- wp-content/themes/miniblog/category.php
Chép toàn bộ nội dung trong file index.php vào category.php
Category là chuyên mục phân các bài viết thành nhóm chứa các Post
Một Post có thể có nhiều Category
Một Category có thể có nhiều Post
Quan hệ nhiều - nhiều (n - n)
Nếu bạn đã đọc qua template hierarchy trong wordpress mà mình đã viết thì không cần phải tạo category.php
chi, để index.php
làm mặc định là được rồi.
Nhưng mình vẫn tạo để bạn có khái niệm và hình dung được Wordpress đi như thế nào.
Mở file category.php
Chèn code sau:
<h1 class="my-2 mb-4 page-header">
Danh mục:
<small><?php single_cat_title() ?></small>
</h1>
Ta sử dụng hàm single_cat_title
để gọi tên của category
Kết quả:
Page.php
Page trong Wordpres có nhiệm vụ chính là show các Page trong Wordpress
Tạo file page.php
- wp-content/themes/miniblog/page.php
Mở file single.php chép toàn bộ sang page.php
Thay thế content-single thành content-page
Tạo file content-page.php trong template-parts
- wp-content/themes/miniblog/template-parts/content-page.php
Về cơ bản content-single.php và content-page.php giống nhau, bạn có sử dụng lại các hàm có trong content-single.php. Khác với Post là viết nhiều thông tin, còn ở đây mình muốn các page chỉ cần show tiêu đề và nội dung ví dụ như trang giới thiệu, liên hệ, hướng dẫn sử dụng...
Mở file content-page.php và nhập nội dung sau
<h1 class="mt-4"><?php the_title() ?></h1>
<p>Posted on <?php echo get_the_date() ?></p>
<hr>
<?php the_content() ?>
Vào backend WP -> Page -> Tạo 1 page là Giới thiệu
Kết quả:
search.php
Tìm kiếm là phần không thể thiếu của mọi website, và mình cần tùy biến nó theo cách của mình bằng cách:
Tạo file search.php
- wp-content/themes/miniblog/search.php
Chép nội dung file category.php vào file seach.php
Sau đó thay H1 với nội dung sau:
<h1 class="my-2 mb-4 page-header">
Tìm kiếm:
<small><?php the_search_query(); ?></small>
</h1>
Sử dụng hàm the_search_query
để trả lại kết quả người dùng đã search.
Kết quả ta được:
Mà nếu người ta search mà không ra kết quả thì cũng thông báo cho người ta một tiếng.
Mở file search.php và thêm mệnh đề else
, nếu không tìm thấy bài viết thì show thông báo sau:
<?php else: ?>
<p>
Không có bài viết nào phù hợp với từ khóa: <strong><?php the_search_query(); ?></strong>
</p>
<form action="<?php bloginfo('url'); ?>/">
<div class="input-group">
<input type="text" class="form-control" value="<?php the_search_query(); ?>" name="s" placeholder="Search for...">
<span class="input-group-btn">
<button class="btn btn-secondary" type="button">Go!</button>
</span>
</div>
</form>
Kết quả:
Nếu muốn tùy biến như chia 2 cột trong search.php bạn có thể tạo file content-search.php trong template-parts. Hiện tại mình đang sử dụng nội dung của content.php.
404.php
Đây là trang xuất hiện thông báo lỗi khi người dùng truy cập vào một đường dẫn nào đó không tồn tại.
Tạo file 404.php có nội dung chính như sau:
- wp-content/themes/miniblog/404.php
<h1 class="my-2 mb-4 page-header">
Không tìm thấy trang:
<small>Error 404</small>
</h1>
<p>
Xin lỗi vì sự cố này! trang bạn đang tìm kiếm không tồn tại. Vui lòng tìm kiếm lại ở khung bên dưới.
</p>
<form action="<?php bloginfo('url'); ?>/">
<div class="input-group">
<input type="text" class="form-control" value="<?php the_search_query(); ?>" name="s" placeholder="Search for...">
<span class="input-group-btn">
<button class="btn btn-secondary" type="button">Go!</button>
</span>
</div>
</form>
Ra ngoài trang chủ và ta thử truy cập vào đường dẫn sau:
http://wordpress.local/day-la-trang-khong-co-that
Kết quả:
archive.php
Archive trong theme là một trang sắp xếp bài viết theo chủ đề, tháng...
Tạo archive.php
- wp-content/themes/miniblog/archive.php
Vì đây là trang dạng custom page ( xem thêm ) nên bạn cần lưu ý phải có Template Name: Archives
ở đây mình đặt là Archives.
<?php
/*
Template Name: Archives
*/
?>
<?php get_header() ?>
<!-- Page Content -->
<div class="container">
<div class="row">
<!-- Blog Entries Column -->
<div class="col-md-8">
<h1 class="my-2 mb-4 page-header">
<?php the_title() ?>
</h1>
<form action="<?php bloginfo('url'); ?>/">
<div class="input-group">
<input type="text" class="form-control" value="<?php the_search_query(); ?>" name="s" placeholder="Search for...">
<span class="input-group-btn">
<button class="btn btn-secondary" type="button">Go!</button>
</span>
</div>
</form>
<div id="custom_html-4" class="widget_text card my-4 widget_custom_html">
<h5 class="card-header">Theo tháng:</h5>
<div class="card-body">
<?php wp_get_archives('type=monthly'); ?>
</div>
</div>
<div id="custom_html-4" class="widget_text card my-4 widget_custom_html">
<h5 class="card-header">Theo chuyên mục:</h5>
<div class="card-body">
<?php wp_list_categories(); ?>
</div>
</div>
</div>
<?php get_sidebar() ?>
</div>
<!-- /.row -->
</div>
<!-- /.container -->
<?php get_footer() ?>
Sau đó bạn vào Page -> Add New -> đặt tên Archives -> Chọn template là Archives
Kết quả:
File code phần 6: miniblog_p6
Cám ơn bạn đã đọc bài viết, chúc bạn một ngày mới tốt lành. Xin cám ơn.