WordPress : Obtenez un balisage pour la publication sans charger dans le modèle

Publié par Jean-Michel le

J’écris un plugin de shortcode qui affiche les messages en fonction de certains paramètres passés dans le shortcode. J’ai le wp_querydroit d’obtenir les publications et j’essaie maintenant d’obtenir le balisage des publications en fonction des fichiers de modèle du thème.

Essentiellement, get_template_part est exactement ce que je veux… sauf qu’il charge directement le balisage dans le modèle. Je souhaite obtenir le balisage du contenu, effectuer un peu de post-traitement, puis renvoyer le balisage du shortcode. Essentiellement,

$listings = new WP_Query(...);
while ( have_posts() ) {
    $markup .= get_template_part('content', $post->post_type);
}
return $markup

Sauf que ce n’est évidemment pas la façon dont cela get_template_partfonctionne. Comment puis-je obtenir le balisage d’un article sans afficher le balisage dans la page ?

Lire également:  Wordpress : Ajouter du code à la boucle du thème enfant StudioPress Genesis

Solution n°1 trouvée

Si vous recherchez uniquement le contenu d’un article avant qu’il ne soit chargé dans un modèle, vous recherchez probablement get_the_content().

Solution n°2 trouvée

Je n’ai pas trouvé de moyen WordPress de faire cela et en regardant la source WP, il semble que cela ne sera probablement jamais vraiment possible. Cependant, j’ai pu obtenir une solution en utilisant PHP vanille en redirigeant la sortie standard dans un tampon et en chargeant le tampon dans une variable.

$listings = new WP_Query(...);
ob_start();
while ( have_posts() ) {
    get_template_part('content', $post->post_type);
}
$markup = ob_get_contents();
ob_end_clean();
return $markup
Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *