問題描述

總之,我所需要的就是讓我的 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。