Ich verwende PHP Lenker-Vorlagen und möchte den gesamten HTML-Code in der Vorlagendatei behalten, damit ich keine header.php habe, sondern der Lenker so aussieht
<html>
<head>
{{#wpHead}}
</head>
wobei wpHead ein Helfer ist, der nur wp_head();
enthält, dessen Ausgabe jedoch vor dem Tag <html>
steht. Ich denke, ich muss Output Buffering verwenden, um es als String zu speichern ... Ist das der einzige/beste Weg?
Der Plan mit der Zeichenfolge besteht darin, sie dem Datenarray hinzuzufügen, das an die Renderfunktion des Lenkers übergeben wird:
global $post;
$data = array(
'wpHead' => get_wp_head_as_string(),
'postContent' => $post->post_content,
'postContentFiltered' => apply_filters( 'the_content', $post->post_content )
);
render( 'default', $data );
Und dann gib es einfach direkt in der Vorlage aus, anstatt mit einem Helfer:
<html>
<head>
<!-- other head stuff -->
{{{wpHead}}} <!-- wp head output -->
</head>
<body>
{{{postContentFiltered}}}
</body>
Sie können die Ausgabepufferung von PHP verwenden. Damit können Sie einen Wrapper für die Funktionget_head()
schreiben
function wpse251841_wp_head() {
ob_start();
wp_head();
return ob_get_clean();
}
Sie können dies dann als verwenden
$data = array(
'wpHead' => wpse251841_wp_head(),
'postContent' => $post->post_content,
'postContentFiltered' => apply_filters( 'the_content', $post->post_content )
);
Referenz: Funktionen zur Ausgabesteuerung