it-swarm.com.de

Wordpress nach Inhalt Hook & externes Template Teil

Ich versuche, diese Methode zu verwenden, um einen Schablonenteil (HTML-Code) einzuschließen, anstatt einfachen Text zu verwenden. Wenn ich Text verwende, wird dieser mit dem Filter the_content unter dem Inhalt korrekt angezeigt. Wenn ich jedoch versuche ,_template_part abzurufen, wird der Inhalt oben im Wordpress-Post angezeigt und nicht unter dem Inhalt.

Gibt es eine bessere Möglichkeit, in Wordpress Vorlagenteile in das Vorher/Nachher von einzelnen Inhalten einzufügen/einzufügen?

Hier ist der Code, den ich mit dem Filter versuche:

function educadme_book_fields_content_hook( $content ) {    
if( is_singular('books') ) {            
$beforecontent = '';
$aftercontent = get_template_part( 'parts/book', 'fields' );
$fullcontent = $beforecontent . $content . $aftercontent;
return $fullcontent;
}

Auch versucht:

$content .= get_template_part( 'parts/book', 'fields' );
return $content;

Immer noch dasselbe Problem, da der gesamte Inhalt von get_template_part über dem Titel und nicht nur über dem Inhalt angezeigt wird. Vielen Dank!

1
Dr.Hariri

Ok, da get_template_part und require nicht verwendet werden konnten, da der Inhalt über dem Inhalt und nicht unter dem Inhalt wiedergegeben wurde (Danke @benoti), habe ich mich für einen anderen Ansatz entschieden:

ob_start(); ?>
<? global $post; ?>

Long HTML Content with some PHP variables inside to load all the custom fields & style I wanted instead of using an external file which I prepared before.

<?php
$book_fields = ob_get_clean();      
$fullcontent = $content . $book_fields;
return $fullcontent;
1
Dr.Hariri

Beachten Sie, dass eine Mischung aus return und echo aus einer Funktion die Textpositionierung ändert.

Wenn Sie dieses einfache Beispiel nehmen:

function test(){
    $the_test = 'test return';
    echo 'test echo';
    return $the_test;
}

echo test();

Unabhängig von der Position der Echozeile wird diese Zeile immer vor echo test(); gedruckt, da das Echo vor dem return $the_test; aufgerufen wird.

Sie müssen mit get_template_part und/oder template_redirect Aktion spielen, um Ihre anzuzeigen Inhalt wie du willst.

Ich hoffe du verstehst was ich meine und die Beziehung zu deinem Problem ;-)

1
Benoti