Ottenere l'ID del post nei cicli while che mostrano l'ID della pagina
È passato un po' di tempo da quando ho usato WordPress e sto cercando di utilizzare Advanced Custom Fields. Sto provando a mostrare l'ID del post all'interno di un ciclo su una pagina, così da poter usare get_field per mostrare i contenuti del post. Il $post->ID mi restituisce l'ID della pagina e non l'ID del post, quindi viene mostrato il numero sbagliato. Come posso ottenere l'ID del post?
<?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; // fine del ciclo. ?>
<?php endif; ?>

Non utilizzare query_posts
o WP_Query
se ne hai bisogno nel loop principale. In ogni caso, non usare mai query_posts
.
<?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; // fine del loop. ?>
<?php endif; ?>
Perché: get_the_ID()

Per favore non usare query_posts()
Nota: Questa funzione non è pensata per essere utilizzata da plugin o temi. Come spiegato in seguito, ci sono opzioni migliori e più performanti per modificare la query principale. query_posts() è un modo eccessivamente semplice e problematico per modificare la query principale di una pagina sostituendola con una nuova istanza della query. È inefficiente (riesegue le query SQL) e fallirà completamente in alcune circostanze (specialmente spesso quando si ha a che fare con l'impaginazione dei post). Qualsiasi codice WP moderno dovrebbe utilizzare metodi più affidabili, come fare uso dell'hook pre_get_posts, per questo scopo.
Nel tuo caso, stai creando un loop secondario su una pagina, quindi quello che vuoi è un nuovo oggetto 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
} // fine del loop.
}

Utilizza wp_query() con i tuoi parametri al posto di query_posts. Query_posts rallenta le tue query. http://codex.wordpress.org/Class_Reference/WP_Query
