wake-up-neo.net

Wie kann ich wp_head () als String erhalten, anstatt ihn wiederzugeben?

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>
1
tsdexter

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

1
Tunji