Короче говоря, мне нужно только сделать мой WordPress
$var = get_template_part( 'loop', 'index' );
но get_template_part()
не возвращает HTML, он печатает его.
Мне нужен этот HTML-код, хранящийся в $var
- есть ли у вас какие-либо идеи, как это сделать?
Это не то, для чего был 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;
}
Я не люблю Buffing Output Buffering, хотя +1 за то, что даже думал об этом как о опции!
Я думаю, что Хельга была на что-то, но вам все равно нужно уважать child_themes и путь к теме, поэтому вместо этого используйте locate_template() (также, как предложил Саймон).
Это хорошо работает и может даже использоваться внутри фильтра или (в моем случае) функции короткого кода (я хотел, чтобы мой shortcode выводил содержимое в файле стиля шаблона, чтобы отделить уровень отображения от логического уровня).
return file_get_contents(locate_template("template-file-name.php")); // don't forget the .php!
а что?
$file = file_get_contents(STYLESHEETPATH . '/template-part.php');
return $file;
Я уверен, что есть лучший способ, но это работает для меня.
$var
.