Подтвердить что ты не робот

WordPress: сохранить `get_template_part()` переменной

Короче говоря, мне нужно только сделать мой WordPress

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

но get_template_part() не возвращает HTML, он печатает его.
Мне нужен этот HTML-код, хранящийся в $var - есть ли у вас какие-либо идеи, как это сделать?

4b9b3361

Ответ 1

Это не то, для чего был get_template_part, get_template_part по существу ведет себя так, как PHP требует функции. Джастин Тадлок пишет об этом подробнее об этом, а также рассказывает о функции 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;
}

Ответ 2

Я не люблю Buffing Output Buffering, хотя +1 за то, что даже думал об этом как о опции!

Я думаю, что Хельга была на что-то, но вам все равно нужно уважать child_themes и путь к теме, поэтому вместо этого используйте locate_template() (также, как предложил Саймон).

Это хорошо работает и может даже использоваться внутри фильтра или (в моем случае) функции короткого кода (я хотел, чтобы мой shortcode выводил содержимое в файле стиля шаблона, чтобы отделить уровень отображения от логического уровня).

return file_get_contents(locate_template("template-file-name.php")); // don't forget the .php!

Ответ 3

а что?

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

Я уверен, что есть лучший способ, но это работает для меня.