问题描述
总之,我所需要的就是让我的 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。