Một số câu trả lời giới thiệu rất tốt ở đây.
Về cơ bản, get_template_part()
cho phép các nhà phát triển chủ đề thiết lập một thứ tự đặc thù của các tệp mẫu. Hãy nghĩ về nó tương tự như tính đặc hiệu vì nó áp dụng cho các bộ chọn CSS. Khi thiết kế một cái gì đó, bạn muốn bắt đầu với độ đặc hiệu tối thiểu, để nó có thể dễ dàng bị ghi đè trong các phần của thiết kế cần chú ý riêng.
Vì vậy, ví dụ, bạn đang tạo kiểu cho một blog và bạn tạo một tệp loop.php hoạt động tốt để đánh dấu các bài đăng. Nhưng bạn có kế hoạch trước và bạn gọi nó trong các tệp mẫu của bạn sau với các chỉ định ngữ cảnh bổ sung - giả sử, trên trang chỉ mục, bạn gọi get_template_part( 'loop', 'index' );
, trên một mẫu duy nhất, bạn gọi get_template_part( 'loop', 'single' );
, trên các trang lưu trữ, bạn gọi get_template_part( 'loop', 'archive' );
, v.v. Điều này giúp bạn dễ dàng thực hiện khi bạn quyết định đánh dấu vòng lặp trên các trang lưu trữ của mình khác với trang chủ: chỉ cần tạo mẫu loop-archive.php và nó sẽ được sử dụng thay vì loop.php chung .
Nhưng ma thuật đằng sau get_template_part()
là trong chức năng locate_template()
, đầu tiên kiểm tra thư mục chủ đề, sau đó là thư mục mẹ (nếu có) cho tệp có tên. Điều này rất hữu ích cho việc phát triển plugin. Trong một trong các plugin của mình, tôi xác định loại bài đăng tùy chỉnh và tạo tệp mẫu vòng lặp cho loại bài đăng tùy chỉnh đó trong thư mục plugin của mình. Nhưng ... tôi muốn cho phép các chủ đề sử dụng plugin của mình để ghi đè đánh dấu nếu chúng chọn. Đây là nơi locate_template()
thực sự làm việc kỳ diệu.
locate_template($template_names, $load = false, $require_once = true )
sẽ tìm kiếm từng tên trong mảng $ template_names trong thư mục biểu định kiểu, sau đó trong thư mục mẫu. Truyền 'true' làm đối số $ load có nghĩa là nó sẽ yêu cầu tệp đầu tiên được tìm thấy và sẽ trả về một chuỗi trống nếu không có tệp mẫu nào được đặt. Vì vậy, tôi có thể làm một cái gì đó như thế này trong plugin của mình:
if ( '' === locate_template( 'loop-mycustomposttype.php', true, false ) )
include( 'loop-mycustomposttype.php' );
... Điều này hy vọng sẽ giúp các nhà phát triển chủ đề dễ dàng tùy chỉnh plugin của tôi chỉ bằng cách bao gồm một tệp có tên loop-mycustomposttype.php trong chủ đề của họ.