Ghi đè get_template_directory () trong chủ đề con?


8

Có thể thay thế một get_template_directory()tệp tin.php của con tôi không?

Tôi muốn thay đổi tập tin:

/**
* Load Custom Post types file.
*/
require get_template_directory() . '/inc/post-types.php';

Rõ ràng tôi muốn công việc của mình không bị ghi đè khi tôi cập nhật chủ đề của mình, vì vậy tôi có thể hủy đăng ký tệp gốc và sau đó đăng ký lại tệp của con tôi trong tệp chức năng của con tôi không?


Có một hành động trong post-types.php? Nếu vậy, có thể loại bỏ hành động, hoặc có thể một hook trong tập tin đó?
czerspalace

đăng ký loại bài đăng có một hành động để cho phép bạn sửa đổi chúng, có thể nếu bạn giải thích những gì bạn muốn thay đổi trong tệp đó, bạn sẽ không cần phải thay thế hoàn toàn.
Milo

Tôi cần thay đổi nhiều. Chủ yếu là tên và hỗ trợ của các loại bài tùy chỉnh khác nhau.
Heather

Bạn có thể sử dụng get_template_directory_uri () trong chủ đề con.
Pardeep

Câu trả lời:


19

Trả lời muộn, nhưng trong Wordpress 4.7, hai chức năng mới đã được giới thiệu để giải quyết câu hỏi này.

get_theme_file_path()(đối với đường dẫn tệp tuyệt đối) và get_theme_file_uri()(đối với URL) hoạt động giống như get_template_part()ở chỗ chúng sẽ tự động tìm trong chủ đề con cho tệp đó trước, sau đó chuyển sang chủ đề gốc.

Trong ví dụ của bạn, bạn có thể viết lại bằng 4.7 để trông như thế này:

/**
* Load Custom Post types file.
*/
require get_theme_file_path( 'inc/post-types.php' );

Thêm thông tin tại đây: https://make.wordpress.org/core/2016/09/09/new-fifts-hooks-and-behaviour-for-theme-developers-in-wordpress-4-7/


11

Bạn cần sử dụng get_stylesheet_directory_uri()thay vì get_template_directory()trong chủ đề con của bạn.

Từ bộ mã WordPress:

get_template_directory_uri ()

Trong trường hợp một chủ đề con đang được sử dụng, thư mục chủ đề gốc URI sẽ được trả về. get_template_directory_uri () nên được sử dụng cho các tài nguyên không có ý định đưa vào / vượt quá chủ đề con. Sử dụng get_stylesheet_directory_uri () để bao gồm các tài nguyên được dự định đưa vào / vượt quá chủ đề con.

get_stylesheet_directory_uri ()

Trong trường hợp một chủ đề con đang được sử dụng, hàm này sẽ trả về URI thư mục chủ đề con. Sử dụng get_template_directory_uri () để tránh bị ghi đè bởi một chủ đề con.


2
Có, nhưng vì get_template_directory () nằm trong chủ đề gốc của tôi, tôi có thể làm gì từ chủ đề con của mình để thay đổi điều đó không?
Heather
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.