Tôi đã tìm thấy điều này để hiển thị tên hiện tại của tệp được sử dụng trong mẫu:
function get_template_name () {
foreach ( debug_backtrace() as $called_file ) {
foreach ( $called_file as $index ) {
if ( !is_array($index[0]) AND strstr($index[0],'/themes/') AND !strstr($index[0],'footer.php') ) {
$template_file = $index[0] ;
}
}
}
$template_contents = file_get_contents($template_file) ;
preg_match_all("Template Name:(.*)\n)siU",$template_contents,$template_name);
$template_name = trim($template_name[1][0]);
if ( !$template_name ) { $template_name = '(default)' ; }
$template_file = array_pop(explode('/themes/', basename($template_file)));
return $template_file . ' > '. $template_name ;
}
Nguồn: lấy tên của mẫu trang trên một trang
Nó hoạt động khá tốt, ngoại trừ trong phần phụ trợ, trong hộp chọn mẫu, tôi nhận được mục nhập thêm xấu xí này:
Có ai có bất cứ ý tưởng làm thế nào để sửa chữa nó? Tôi thậm chí không biết tại sao chức năng này được gọi trong phần phụ trợ. Có một chức năng có điều kiện như is_frontend()
- có lẽ điều này sẽ giải quyết vấn đề?
template_include
hook, mà t31os đã đề xuất, giải quyết vấn đề? Hoặc có thể tôi đã hiểu lầm bạn.
functions.php
là một lỗi, tôi sẽ hoàn toàn đồng ý với tiền đề của bạn. Để làm cho vấn đề tồi tệ hơn, tôi đã quét mã lõi WordPress và tìm thấy khoảng 5 nơi có thể có một cái móc để cho phép bạn xử lý vấn đề này nhưng tôi không tìm thấy. Tôi khuyên bạn nên đăng một vé trên core.trac.wordpress.org .