web-dev-qa-db-fra.com

pourquoi the_content () ne fonctionne-t-il pas dans cette page {single-custom_post_type.php}?

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?

7
djb

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();
?>

See Accède à toutes les données postales

3
Giraldi

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;
9
Brian Fegter