Ce code provient de ma page single-publication.php
.
Il génère les champs personnalisés appropriés, etc. (ici enveloppés dans des balises de modèle), mais the_content()
ne produira pas le contenu de la publication. J'ai eu recours à $post->post_content
(qui fonctionne), mais le mystère demeure:
<div class="publication-info">
<?php printf("<h2>%s</h2>", get_the_title() ); ?>
<div class="publication-meta publication-credit"><?php the_publication_credit(); ?></div>
<div class="publication-meta publication-date"><?php the_publication_date(); ?></div><br />
<div class="publication-blurb" style="font-family:sans-serif;"><?php echo $post->post_content; // the_content() doesn't work. Why not? ?></div>
</div>
Que se passe t-il ici?
EDIT: J'étais motivé à poser cette question parce que je croyais, à tort, que $post
fonctionner et get_the_title()
renvoyer un titre étaient un signe irréfutable d'être dans la boucle. Mais apparemment ce n'est pas le cas. cf Codex sur la boucle (deuxième paragraphe) et Codex sur get_the_title () (liste de paramètres). Quelqu'un peut-il expliquer?
Certaines données relatives aux publications ne sont pas disponibles pour get_posts par défaut , telles que le contenu de publication via the_content()
ou l'ID numérique. Ceci est résolu en appelant une fonction internesetup_postdata()
, avec le tableau $ post :
<?php
$args = array( 'posts_per_page' => 3 );
$lastposts = get_posts( $args );
foreach ( $lastposts as $post ) :
setup_postdata( $post ); ?>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php the_content(); ?>
<?php endforeach;
wp_reset_postdata();
?>
Il y a de bonnes chances que votre code HTML ne soit pas inclus dans la boucle. Assurez-vous que votre code ressemble à ceci:
if(have_posts()): while(have_posts()): the_post(); ?>
<div class="publication-info">
<?php printf("<h2>%s</h2>", get_the_title() ); ?>
<div class="publication-meta publication-credit"><?php the_publication_credit(); ?></div>
<div class="publication-meta publication-date"><?php the_publication_date(); ?></div><br />
<div class="publication-blurb" style="font-family:sans-serif;"><?php echo $post->post_content; // the_content() doesn't work. Why not? ?></div>
</div>
<?php endwhile; endif;