問題描述
總之,我所需要的就是讓我的 WordPress 做到這一點
$var = get_template_part( 'loop', 'index' );
但是,get_template_part()不返回 HTML,它列印它。我需要這個 HTML 儲存在 $var 中 – 你有什麼想法怎麼辦?
最佳解決辦法
這不是 get_template_part 所用的,get_template_part 本質上就像 PHP 的 require 功能一樣。 Justin Tadlock writes a lot more about this here 還談論一個 Wordpress 功能,可能對您更有用 – locate_template 。
或者,如果您確實想使用 get_template_part 來破解此功能,則可以使用模板緩衝:
function load_template_part($template_name, $part_name=null) {
ob_start();
get_template_part($template_name, $part_name);
$var = ob_get_contents();
ob_end_clean();
return $var;
}
次佳解決辦法
我不喜歡輸出緩衝,雖然+1 甚至認為這是一個選擇!
我認為 Helga 正在做一些事情,但是你還是要尊重 child_themes 和主題路徑,所以使用 locate_template()(也像 Simon 所說) 。
這可以很好地工作,甚至可以在一個過濾器或 (在我的情況下) 短碼功能中使用 (我想要我的短程式碼輸出一個 template-style 檔案中的內容,以將顯示層與邏輯層分隔開) 。
return file_get_contents(locate_template("template-file-name.php")); // don't forget the .php!
第三種解決辦法
關於什麼?
$file = file_get_contents(STYLESHEETPATH . '/template-part.php');
return $file;
我確定有一個更好的方法,但這似乎對我有用。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。