web-dev-qa-db-fra.com

Wordpress après contenu Crochet et partie de modèle externe

J'essaie d'utiliser cette méthode pour inclure une partie de modèle (code HTML) plutôt que d'utiliser du texte brut. Lorsque j'utilise du texte, il s'affiche correctement sous le contenu du filtre the_content. Cependant, si j'essaie d'obtenir get_template_part, le contenu s'affiche en haut de la publication Wordpress plutôt qu'en dessous du contenu.

Existe-t-il un meilleur moyen d’inclure/d’obtenir des parties de modèle liées à l’avant/après d’un contenu unique dans Wordpress?

Voici le code que j'essaye avec le filtre:

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;
}

Aussi essayé:

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

Toujours le même problème car tout le contenu de get_template_part est affiché au-dessus même du titre, pas seulement le contenu. Merci!

1
Dr.Hariri

Ok puisque get_template_part et require ne peuvent pas être utilisés car ils reprennent le contenu au-dessus du contenu et pas en dessous (Merci @benoti), j'ai décidé d'utiliser une approche différente:

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

Sachez qu'un mélange de return et echo à partir d'une fonction modifiera le positionnement du texte.

Si vous prenez cet exemple simple:

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

echo test();

Quel que soit l'emplacement de la ligne en écho, cette ligne sera toujours imprimée avant echo test(); car echo est appelé avant le return $the_test;

Vous devez jouer avec get_template_part et/ou template_redirect pour afficher votre contenu que vous voulez.

J'espère que vous comprenez ce que je veux dire et la relation avec votre problème ;-)

1
Benoti