Override Template trong WordPress

Rate this post

WordPress rất mạnh trong việc sắp xếp và xây dựng cấu trúc theme semantic. Điều đó làm rất nhiều người dễ dàng tùy biến website của mình theo các cách khác nhau.

Main Template

Hãy bắt đầu với các page template cơ bản nhất.

Những file template theo cấu trúc  WP hierarchy nằm ngoài cùng root theme folder sẽ đơn giản như thế này. Mình lấy ví dụ:

page.php

taxonomy.php

category.php

single.php

archives.php

Tùy biến Template riêng cho cụ thể 1 post/page/type

Tiếp theo, là khi bạn tùy biến các Template riêng của từng template, nó sẽ trở thành như thế này:

  • page-58.php
  • single-151.php

(tức là lấy ID để làm giá trị gắn template cố định cho ID đó)

Hoặc:

  • taxonomy-news.php
  • page-about.php

(tức là lấy slug để gắn template)

Tùy biến Template theo những tiêu chí phức tạp hơn

Giờ phức tạp hơn, ta muốn gắn 1 Template  mà khi người ta gõ index.php?author=anthony&featured=1 thì sẽ có 1 Custom Template riêng.

Suy luận đầu tiên:

Page template mặc định sẽ là author.php (theo  WP hierarchy).

Tuy nhiên, lại có thêm featured=1. Cái này là gì ta?

Trong WordPress, cái bạn đang hỏi được gọi là var, và được call bằng get_query_var()

Khi đó bạn cần làm các thao tác sau:

  1. Đăng ký var featured (tự tìm hiểu món này hay lắm nhé).
  2. Tìm hiểu về template_include() – là hình thức override template phức tạp hơn.
  3. Xác định tình huống if( is_author() & get_query_var(‘featured’) == ‘1’) thì sẽ include template riêng cho nó thông qua lệnh get_template_part() mình có nhắc tới trong bài này.

Có hay không?

Chưa hết đâu, còn dăm ba case tình huống override template phức tạp hơn sẽ được mình chia sẻ trong thời gian tới nhé.

Viết một bình luận


Chuyên gia về Web
Bạn muốn làm việc với dịch vụ website do chúng tôi triển khai?
Gọi tư vấn 0982.90.4343
Chuyên gia về Web
Bài viết liên quan
Gọi file PHP trong WordPress

19/09/2023

Cài đặt và sử dụng WP-CLI trên môi trường Linux
Trên một số môi trường Hosting có thể cung cấp SSH hoặc Terminal access, song không có sẵn WP-CLI để...
Import database MySQL lớn trên môi trường Docker

06/08/2023

Import database MySQL lớn trên môi trường Docker
Mình sử dụng EasyPanel để quản lý các Docker và build môi trường app. Nay gặp tình huống phải import...

28/01/2023

Hướng dẫn cài đặt php extension mongodb trên Mac OS M1
Khi bạn muốn hỗ trợ MongoDB trên dòng Mac M1, phần cài đặt sẽ cần một chút lưu ý. Hướng...
Git

18/12/2022

Xử lý lỗi Git không thể tiến hành merge do merge.renamelimit
Khi bạn tiến hành merge nhánh phụ vào nhánh chính hoặc lên nhánh production, có thể xung đột xảy ra...