简而言之,我所需要的只是让我的WordPress做到这一点
$var = get_template_part( 'loop', 'index' );
但是,get_template_part()
不会返回HTML,而是打印它。
我需要存储在$var
中的这个HTML - 你有什么想法怎么做吗?
答案 0 :(得分:76)
这不是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 :(得分:12)
我不喜欢输出缓冲,虽然+1甚至认为这是一个选项!
我认为Helga有所作为,但你仍然需要尊重child_themes和主题路径,所以请改用locate_template()
(也像Simon建议的那样)。
这很好用,甚至可以在过滤器或(在我的情况下)短代码函数中使用(我希望我的短代码在模板样式文件中输出内容,将显示层与逻辑层分开)。
return file_get_contents(locate_template("template-file-name.php")); // don't forget the .php!
答案 2 :(得分:4)
怎么样?
$file = file_get_contents(STYLESHEETPATH . '/template-part.php');
return $file;
我确信有更好的方法,但这似乎对我有用。