Advanced Custom Fields - Recuperare dati da un'altra pagina

10 set 2013, 19:11:25
Visualizzazioni: 13.6K
Voti: 0

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; ?>
0
Tutte le risposte alla domanda 1
2

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;
10 set 2013 19:37:25
Commenti

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

adam adam
15 set 2013 18:56:17

vedi modifica sopra.

Milo Milo
15 set 2013 19:08:50