Advanced custom fields - extrayendo datos de otra página

10 sept 2013, 19:11:25
Vistas: 13.6K
Votos: 0

Hola, estoy usando Advanced Custom Fields y estoy intentando extraer datos de múltiples páginas para mostrarlos en otra.

Configuré un campo de relación llamado "data", y luego en la página X donde se muestra el campo de relación, seleccioné la página Y de donde quiero extraer los datos.

<?php if( get_field('data') ): ?>
     <?php the_field('special_offer'); ?> <!--// obtener contenido de la página Y -->
<?php endif; ?>

No puedo hacer que esto funcione y supongo que lo anterior está mal, ¿alguien sabe cómo podría hacerlo por favor?

Espero haberlo explicado claramente.

Saludos

<?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
Todas las respuestas a la pregunta 1
2

El campo de relación devuelve un array de objetos de post. Cada objeto de post contiene el ID del post relacionado. Las funciones de campo de ACF aceptan un segundo parámetro, que es el ID del post del cual deseas recuperar datos, si no es el post actual.

if( $related_pages = get_field( 'data' ) ):
    foreach( $related_pages as $page ):
        the_field( 'special_offer', $page->ID );
    endforeach;
endif;

Todo esto está en la documentación de ACF, que es bastante exhaustiva con muchos ejemplos.

EDITAR

Si deseas usar etiquetas de plantilla que requieren la variable global $post, debes usar setup_postdata() para poblarla con los datos del post. Ten en cuenta que get_the_excerpt no acepta un ID de post como lo hace get_the_title.

if( $related_pages = get_field( 'data' ) ):
    foreach( $related_pages as $post ): // debes usar $post para que funcione
        setup_postdata( $post );
        the_title();
        the_excerpt();
    endforeach;
    wp_reset_postdata(); // restaura la variable global $post para el bucle exterior
endif;
10 sept 2013 19:37:25
Comentarios

Disculpa la demora en responder y ¡muchas gracias por tu respuesta!

Por alguna razón, get_the_excerpt o el contenido solo está obteniendo el contenido de la página en la que estás. ¿No tendrás idea de qué podría estar causando esto o si estoy haciendo algo mal? (He actualizado el OP)

Curiosamente, obtiene el título correctamente pero no el contenido :S

adam adam
15 sept 2013 18:56:17

ver edición anterior.

Milo Milo
15 sept 2013 19:08:50