WordPress: save `get_template_part()` to variable

Atomicus picture Atomicus · Apr 28, 2011 · Viewed 26.7k times · Source

In short, all I need is to make my WordPress do this

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

but, get_template_part() does not return HTML, it prints it.
I need this HTML stored in $var - do you have any ideas how to do it?

Answer

Simon Scarfe picture Simon Scarfe · Apr 28, 2011

This isn't what get_template_part was for, get_template_part essentially behaves like PHP's require function. Justin Tadlock writes a lot more about this here and also talks about a Wordpress function that might be more useful to you - locate_template.

Alternatively, if you did want to hack this functionality using get_template_part, you could use template buffering:

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;
}