web-dev-qa-db-fra.com

obtenir l'identifiant de post dans les boucles affichant l'identifiant de page

cela fait longtemps que je n'ai pas utilisé WordPress et que j'essaie d'utiliser des champs personnalisés avancés. J'essaie de générer l'ID de publication dans une boucle sur une page afin de pouvoir utiliser get_field pour afficher le contenu de la publication. Ths $ post-> ID me donne l'identifiant de la page, pas l'identifiant de la publication si un mauvais numéro est généré, comment puis-je obtenir l'identifiant de la publication?

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

                    <?php $current_id = $post->ID ?>

   <?php echo $current_id ?>

            <h1><?php the_field('titleFart', $current_id); ?></h1>

        <?php endwhile; // end of the loop. ?>

<?php endif; ?>
1
Anders Kitson

Ne pas utiliser query_posts ou WP_Query si vous en avez besoin dans la boucle principale. N'utilisez jamais query_posts de toute façon.

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

   <?php $current_id = get_the_ID(); ?>
   <?php echo $current_id ?>

            <h1><?php the_field('titleFart', $current_id); ?></h1>

<?php endwhile; // end of the loop. ?>
<?php endif; ?>

Parce que: get_the_ID()

2
aifrim

Merci de ne pas utiliser query_posts()

Remarque: Cette fonction n'est pas destinée à être utilisée par des plugins ou des thèmes. Comme expliqué plus tard, il existe de meilleures options plus performantes pour modifier la requête principale. query_posts () est une façon trop simpliste et problématique de modifier la requête principale d'une page en la remplaçant par une nouvelle instance de la requête. Il est inefficace (ré-exécute les requêtes SQL) et échouera carrément dans certaines circonstances (particulièrement lorsqu'il s'agit de pagination de publications). Tout code WP moderne devrait utiliser des méthodes plus fiables, telles que l'utilisation du hook pre_get_posts, à cette fin.

http://codex.wordpress.org/Function_Reference/query_posts

Dans votre cas, vous créez une boucle secondaire sur une page et vous souhaitez donc un nouvel objet WP_Query .

$q = new WP_Query(
  array(
    'posts_per_page' => 5
  )
);

if ( $q->have_posts() ) {
  while ( $q->have_posts() ) {
    $q->the_post(); 
    $current_id = $post->ID;
    echo $current_id ?>
      <h1><?php the_field('titleFart', $current_id); ?></h1><?php 
  } // end of the loop. 
}
1
s_ha_dum

Utilisez plutôt wp_query () avec vos paramètres. Query_posts ralentit vos requêtes. http://codex.wordpress.org/Class_Reference/WP_Query

0
certainstrings