WordPress:将`get_template_part()`保存为变量

时间:2011-04-28 11:16:18

标签: wordpress templates

简而言之,我所需要的只是让我的WordPress做到这一点

$var = get_template_part( 'loop', 'index' ); 

但是,get_template_part()不会返回HTML,而是打印它。
我需要存储在$var中的这个HTML - 你有什么想法怎么做吗?

3 个答案:

答案 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;

我确信有更好的方法,但这似乎对我有用。