WordPress – Dùng get_template_part() thế nào cho đúng?

bởi Con Heo Không Mập

Để thay thế cho require, WordPress cung cấp cho chúng ta một function là get_template_part(). Tuy nhiên, liệu bạn có hiểu cách dùng của nó? Bài viết này sẽ giúp bạn hiểu rõ hơn cách dùng của hàm mà mình tin bạn sẽ phải dùng nhiều này. 

***Cảnh báo Wall of Text: Bài viết này toàn là chữ và chữ!!!
***Bài viết được tham khảo và lược dịch dựa trên tài liệu của WordPress. Xem bản gốc tại ĐÂY.

Mô tả

Theo tài liệu WP, hàm này cung cấp một cơ chế đơn giản để bạn có thể tái sử dụng lại những section mà bạn đã tạo trong theme hoặc child theme. Có thể hiểu đơn giản, khi bạn viết theme, sẽ có những sections hoặc những blocks nào đó mà có thể bạn sẽ cần phải dùng lại nó trong một template khác, khi này bạn sẽ tách phần đó ra thành 1 “part” riêng và mỗi khi cần thì sẽ dùng hàm này để gọi ra lại. 

Để ví dụ cho dễ hiểu, bạn có thể hình dung: Ở cả 2 trang là Trang Chủ và Liên Hệ (cả 2 trang sử dụng 2 template khác nhau là home.phpcontact.php), bạn đều sử dụng cùng 1 slideshow. Khi này thay vì phải code 1 lần ở 1 template và copy lại nó, bạn có thể tách nó ra thành 1 file riêng (hay có thể hiểu là 1 part – 1 phần) và sử dụng hàm trên để load nó ra lại mỗi khi cần. 

Cũng dựa theo tài liệu WP, các “part” này sẽ được nhúng vào bằng hàm require của PHP, chứ không phải hàm require_once. Điều này đồng nghĩa với việc, bạn có thể nhúng lại 1 part trên cùng 1 template nhiều lần mà không gặp bất kỳ vấn đề gì. 

Các Tham số & Sơ bộ cách sử dụng

$slug 
(string) (Bắt buộc) Đây là tham số bắt buộc nhập của hàm này, slug ở đây tức là cái tên của template part mà bạn muốn gọi và có kiểu dữ liệu là chuỗi (string). Bạn có thể tách cái tên file bạn đặt ra và các chuỗi nằm trước chữ cuối cùng chính là slug của template. Nghe hơi mơ hồ nhỉ, mình sẽ giải thích:
Ví dụ bạn có template part contact-manager.php, thì khi tách cụm contact-manager ra bạn có thể hiểu rằng contact chính là $slug. Vậy manager là gì? 

$name
(string) (Tuỳ chọn) Đây không phải là tham số bắt buộc. cũng theo như ví dụ trên về file contact-manager.php thì cụm manager này bạn có thể quy định nó là $name của template. Vì sao đây là 1 tham số tùy chọn? WP không bắt ép bạn phải khai báo tham số này, mà thay vào đó bạn hoàn toàn có thể giữ nguyên tên file mà không cần phải tách ra thành $slug và $name riêng. Mục đích của việc khai báo 2 tham số này là để tiện cho bạn quản lý và phân loại các template. 

Cụ thể, trên tài liệu của WP, $slug được gọi là generic$namespecialised, ở đây bạn có thể hiểu $slug chính là cái tên chung và $name chính là cái tên riêng biệt dành cho mỗi template khác nhau. Ví dụ, bạn có 3 template parts được tách từ 3 section của trang chủ thì để tách thành template, bạn có thể đặt thế này: home-first.php, home-second.php, home-third.php. Như vậy, ta có thể hiểu thì cái tên chung (tức $slug) là home và first, second, third là tên riêng biệt (tức $name). 

Việc đặt tên thế này không ảnh hưởng gì tới code cả, bạn có tách ra $slug với $name không hay khai báo chung là $slug hết đều được, nó chỉ phụ thuộc vào bạn thấy thế nào là hợp lý thôi. Ví dụ

$args
(array) (Tuỳ chọn) Tham số cuối cùng cũng là một tham số tuỳ chọn (không bắt buộc), thuộc kiểu dữ liệu là mảng (array). Bạn khai báo tham số này nhằm mục đích truyền vào các biến, giá trị, dữ liệu “động” mà bạn gọi về và truyền vào template bạn gọi. 

Ví dụ: Mình thực hiện một vòng lặp lấy các bài viết, chúng ta hãy thử viết một query đơn giản như sau:

Sau đó, chúng ta bắt đầu dựng layout của mỗi bài viết chúng ta gọi ra. Mình sẽ làm đơn giản chúng ta cần 1 cái div bao bọc và lấy dữ liệu đơn giản (link và tiêu đề bài viết) của mỗi bài viết ra:

Để áp dụng function này, bạn có thể tạo 1 folder cùng cấp với file functions.php trong theme của bạn và đặt tên nó là template-parts (đây chỉ là cái tên thông dụng, thật thế bạn có thể đặt bất cứ tên gì). Sau đó, hãy tạo 1 file template và đặt tên cho nó, ở đây mình sẽ đặt là post-box.php. 

Sau đó, bạn hãy làm thế này: 

Giờ ở template part bạn đã tạo, để sử dụng những tham số đã truyền, bạn có thể làm cách này: 

Như vậy, trong bài này, mình tin là bạn đã có thể hiểu cách dùng hợp lý cho function hữu ích này. Note thêm 1 mục nhỏ nữa đó là với những bạn đã dùng WP từ trước phiên bản 5, thì function này vốn không có tham số thứ 3 tức tham số $args. Chỉ đến phiên bản 5.5, WP mới giới thiệu tham số này cũng như tính năng truyền dữ liệu vào template-parts. 

Cảm ơn bạn đã đọc hết bài viết, để đọc thêm các bài viết về WordPress, hãy theo dõi tại đây. Hy vọng bài viết này sẽ giúp ích cho các bạn trong việc phát triển Theme WordPress.

 
(Visited 53 times, 1 visits today)
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x