Advanced Custom Fields - Recuperare dati da un'altra pagina
Ciao, sto utilizzando Advanced Custom Fields e sto cercando di recuperare dati da più pagine per visualizzarli su un'altra.
Ho impostato un campo relazione chiamato "data", e poi nella pagina X dove viene visualizzato il campo relazione ho selezionato la pagina Y da cui voglio estrarre i dati
<?php if( get_field('data') ): ?>
<?php the_field('special_offer'); ?> <!--// ottieni il contenuto dalla pagina Y -->
<?php endif; ?>
Non riesco a farlo funzionare e presumo che il codice sopra sia sbagliato, qualcuno sa come potrei fare?
Spero di essermi spiegato chiaramente
Grazie
<?php if( $related_pages = get_field( 'special_offer_relationship' ) ): ?>
<?php foreach( $related_pages as $page ): ?>
<?php echo get_the_title( $page->ID ); ?>
<?php echo get_the_excerpt( $page->ID ); ?>
<?php endforeach; ?>
<?php endif; ?>

Il campo relationship restituisce un array di oggetti post. Ogni oggetto post contiene l'ID del post correlato. Le funzioni dei campi di ACF accettano un secondo parametro, che è l'ID del post da cui vuoi recuperare i dati, se non è il post corrente.
if( $related_pages = get_field( 'data' ) ):
foreach( $related_pages as $page ):
the_field( 'special_offer', $page->ID );
endforeach;
endif;
Tutto questo proviene dalla documentazione di ACF, che è piuttosto completa con molti esempi.
MODIFICA
Se vuoi utilizzare i tag template che richiedono la variabile globale $post
, devi usare setup_postdata() per popolarla con i dati del post. Nota che get_the_excerpt
non accetta un ID post come fa get_the_title
.
if( $related_pages = get_field( 'data' ) ):
foreach( $related_pages as $post ): // devi usare $post per far funzionare
setup_postdata( $post );
the_title();
the_excerpt();
endforeach;
wp_reset_postdata(); // ripristina $post globale per il loop esterno
endif;

Scusa per la risposta tardiva e grazie mille per la risposta!
Per qualche motivo get_the_excerpt, o content sta prendendo il contenuto dalla pagina in cui ti trovi, non credo tu sappia cosa potrebbe causare questo o se sto facendo qualcosa di sbagliato? (Ho aggiornato l'op)
Stranamente ottiene bene il titolo ma non il contenuto :S
