Để trở thành wordpress developer tốt tất nhiên bạn cần biết WordPress template hierarchy. Hiểu cách hoạt động của cấu trúc giao diện WordPress sẽ giúp bạn có nhiều khả năng hơn để tùy biến theme.
Các mục của WordPress template hierarchy
- 1.Site front page
- 2.Single posts
- 3.Single pages
- 4.Category và tag pages
- 5.Custom post types
- 6.Custom Taxonomy
- 7.Trang kết quả tìm kiếm
- 8.Trang lỗi 404
Ngoài ra còn Author Archive và Attachment Post nhưng đều rất ít gặp đến nên tôi sẽ không đề cập vào bài viết.
template hierarchy
Các tệp tin template chính
Hầu hết các trang WordPress đều cần nhiều template files để hoạt động, bao gồm:
functions.php
index.php
header.php
sidebar.php
footer.php
single.php
page.php
comments.php
search.php
archive.php….
Cách hệ thống cấp bậc trong template trong wordpress( WordPress template hierarchy )
Gỉa sử tôi có một category là wordpress có id = 36 bạn truy cập vào kho lưu trữ category này của tôi trên lbk.vn. WordPress template hierarchy sẽ hoạt động như sau:
- Đầu tiên wordPress sẽ tìm file template gọi là category-wordpress.php trong cùng thư mục của theme.
- Nếu không có file category-hosting.php, WordPress sẽ tìm theo category ID, ví dụ như category-36.php.
- Nếu WordPress không thể tìm được bất kỳ file nào, nó sẽ tìm file category.php.
- Nếu nó vẫn không tìm thấy file category.php, WordPress sẽ quay lại tìm template file archive.php.
- Cuối cùng, nếu tất cả đều không thành công, nó sẽ tải file index.php của theme và dùng nó làm template của trang.
Tuy nhiên tiêu chuẩn các theme đều có file category.php hoặc archive.php.
Như bạn thấy, để truy cập vào template chứa category “wordpress” trải qua nhiều quá trình tìm kiếm, ưu tiên theo một quy tắc từ cao xuống thấp. đây chỉ là quy tắc ưu tiên của một phần trong mục Category và tag pages đã đề cập bên trên, tiếp theo tôi sẽ trình bày phần còn lại.
Cách hoạt động của các mục chính wordpress template hierarchy
Site Front Page
Về front page của website bạn. Khi WordPress tải trang chủ lên cấp độ ưu tiên như sau: front-page.php => home.php => index.php.
Kể cả khi có đầy đủ 3 file wordpress cũng chỉ tải duy nhất 1 file theo thứ tự ưu tiên.
Single Posts
Bài viết này nằm trong loại single posts nên tôi lấy ví dụ luôn bài này nhé. Bài này có slug: wordpress-template-hierarchy-he-thong-cap-bac-trong-template-trong-wordpress-2927, id = 2927
Khi wordpres tải single posts sẽ tải theo cấp độ sau : single-{post-type}-{slug}.php sẽ được ưu tiên tải đầu tiên => single-{post-type}.php => single.php => singular.php => index.php.
Chiếu theo thông tin bài viết thì độ ưu tiên tải của bài viết này : single-post-wordpress-template-hierarchy-he-thong-cap-bac-trong-template-trong-wordpress-2927.php. dài quá. => single-post.php => single.php => singular.php => index.php
Thông thường theme sẽ không có file single-{post-type}-{slug}.php. Nếu bạn thích tạo mẫu riêng cho riêng một bài viết thì hãy sử dụng single-{post-type}-{slug}.php
Single Pages
Khi wordpres tải single pages sẽ tải theo cấp độ sau file template riêng => page–{slug}.php => page-{id}.php => page.php => singular.php => index.php
Tương tự như Single Posts nhưng file template riêng tôi chưa động đến bao giờ nên, còn về phần page-{slug}.php, page-{id}.php vẫn hoạt động rất tốt nhé.
Category và Tag Pages
Khi wordpres tải Catategory hoặc Tags sẽ tải theo cấp độ sau category(tag)–{slug}.php => category(tag)-{id}.php => category(tag).php => archive.php => index.php
Custom Post Types
Custom post type
Custom post type là một loại post type tùy chỉnh, tùy vào nhu cầu của bài viết, ví dụ trang webcủa bạn chuyên review các loại ô tô, bạn nên cân nhắc tạo riếng một post type dành riêng cho việc này.
Khi wordpres tải Custom Post Types sẽ tải giống thứ tự ưu tiên của Single Posts , chỉ việc thay {post-type} giống postype bạn tạo là được. ví dụ giả sử tôi có một custom postype “image-gallery” , bài viết có slug “cong-ty-lbk-trong-hoat-dong-gan-ket-tai-ha-noi-36” wordpress sẽ ưu tiên tải theo cấp độ sau :single-image-gallery-cong-ty-lbk-trong-hoat-dong-gan-ket-tai-ha-noi-36.php => single-image-gallery.php => single.php => singular.php => index.php.
Custom post type Archive
archive-{post_type}.php => archive.php => index.php
Custom Taxonomy
Taxonomy là phân loại dữ liệu, Tag, category là một loạt category đặc biệt thông dụng dùng cho bài viết, tuy nhiên với Custom Post Types có thể sẽ không sử dụng đến mà sử dụng đến Custom Taxonomy.
Ví dụ Trang web của bạn đăng song hành 2 loại posttype một loại là bài viết, một loại là dự án. Bạn sẽ không muốn sử dụng category có sẵn cho dự án đâu, vì các term bạn tạo cho bài viết chưa hẳn đã phù hợp với loại posttype dự án và nếu bạn xử dụng chung category khi lấy ra các bài viết thuộc category chúng sẽ hiển thị cả 2 loại bài viết là dự án và bài viết. trong trường hợp này bạn có thể tạo thêm custom taxonomy riêng cho postype dự án của bạn để phân biệt với category.
Giả sử tôi taxonomy mới có slug “project” và trong taxonomy tôi có tạo môt term có slug “nha-may-thuy-dien-hoa-binh” wordpress sẽ ưu tiên tải như sau: taxonomy-project-nha-may-thuy-dien-hoa-binh.php
=> taxonomy-project.php => taxonomy.php => archive.php => index.php
Trang kết quả tìm kiếm
Hầu hết các trang đều có template file search.php. Độ ưu tiên tải của loại này đơn giản như sau: search.php => index.php
Trang không tìm thấy 404
Hầu hết các trang cũng có teamplate để hiển thị cho việc không tìm thấy dữ liệu Độ ưu tiên cũng rất đơn giản: 404.php => index.php
Trên đây là bài viết trình bày về template hierarchy.
Tài liệu tham khảo: https://developer.wordpress.org/themes/basics/template-hierarchy/