WordPress: save `get_template_part()` to variable

后端 未结 3 1812
滥情空心
滥情空心 2020-12-25 09:43

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

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

but, get_template_part()

相关标签:
3条回答
  • 2020-12-25 10:06

    I'm not loving Output Buffering, though +1 for even thinking of that as an option!

    I think Helga was on to something, but you need to still respect the child_themes and the theme path, so use locate_template() instead (also as Simon suggested).

    This works nicely, and can even be used inside a filter or (in my case) shortcode function (I wanted my shortcode to output the content within a template-style file, to separate the display layer from the logic layer).

    return file_get_contents(locate_template("template-file-name.php")); // don't forget the .php!
    
    0 讨论(0)
  • 2020-12-25 10:24

    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;
    }
    
    0 讨论(0)
  • 2020-12-25 10:28

    what about?

    $file = file_get_contents(STYLESHEETPATH . '/template-part.php'); 
    return $file;
    

    i'm sure there is a better way, but that seems to work for me.

    0 讨论(0)
提交回复
热议问题