web-dev-qa-db-fra.com

setup_postdata ne semble pas fonctionner

J'ai des problèmes avec setup_postdata(). De ma compréhension, si je veux utiliser des fonctions telles que the_permalink() ou the_title(), je dois utiliser setup_postdata().

À l'heure actuelle, the_permalink() ou the_title() ne renvoie rien (vide). J'ai aussi essayé echo get_the_title() pour voir ce qui se passe, mais même cela donne le même résultat.

Voici le code le concerne le problème:

  $posts = get_posts($args);
  foreach($posts as $post) {
    setup_postdata($post);
  ?>
  <article class="col two tablet-four mobile-six box">
    <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
      <div class="featured-image">
      <?php if(has_post_thumbnail(get_the_ID())): ?>
        <?php $image = wp_get_attachment_image_src(get_post_thumbnail_id(get_the_ID()), array(650,200)); ?>
        <div style="background: url('<?php echo $image[0]; ?>') center center no-repeat;"></div>
      <?php endif; ?>
      </div>
      <section class="content">
        <?php $cat = get_the_category(get_the_ID()); ?>
        <span class="category"><?php echo $cat[0]->cat_name; ?></span>
        <?php the_title(); ?>
        <?php the_excerpt(); ?>
      </section>
    </a>
  </article>
  <? }
  wp_reset_postdata();

Donc, fondamentalement, ce code est dans une fonction qui est une fonction de rappel pour une demande AJAX. La fonction saisit le prochain ensemble de messages pour simuler quelqu'un qui clique sur le bouton de la page suivante.

Après get_posts(), la variable $posts est renseignée par les publications appropriées, de sorte qu’elle récupère quelque chose.

À l'heure actuelle, il répond uniquement avec les balises sans données.

Merci.

1
Koralarts

Selon le Codex , vous semblez ignorer le plus important global $post; au début, comme ceci:

global $post;
$posts = get_posts($args);
  foreach($posts as $post) {
    setup_postdata($post);
  ?>
  <article class="col two tablet-four mobile-six box">
    <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
      <div class="featured-image">
      <?php if(has_post_thumbnail(get_the_ID())): ?>
        <?php $image = wp_get_attachment_image_src(get_post_thumbnail_id(get_the_ID()), array(650,200)); ?>
        <div style="background: url('<?php echo $image[0]; ?>') center center no-repeat;"></div>
      <?php endif; ?>
      </div>
      <section class="content">
        <?php $cat = get_the_category(get_the_ID()); ?>
        <span class="category"><?php echo $cat[0]->cat_name; ?></span>
        <?php the_title(); ?>
        <?php the_excerpt(); ?>
      </section>
    </a>
  </article>
  <? }
  wp_reset_postdata();
3
1fixdotio