Advanced Custom Fields - получение данных с другой страницы
Здравствуйте, я использую Advanced Custom Fields и пытаюсь получить данные с нескольких страниц и отобразить их на другой.
Я создал поле типа "relationship" под названием "data", и затем на странице X, где должно отображаться это поле, я выбрал страницу Y, с которой хочу получить данные.
<?php if( get_field('data') ): ?>
<?php the_field('special_offer'); ?> <!--// получаем контент со страницы Y -->
<?php endif; ?>
У меня не получается заставить это работать, и я предполагаю, что вышеуказанный код неверен. Кто-нибудь знает, как это можно сделать?
Надеюсь, я объяснил понятно.
Спасибо.
<?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; ?>

Поле relationship возвращает массив объектов записей. Каждый объект записи содержит ID связанной записи. Функции полей ACF принимают второй параметр — ID записи, из которой нужно получить данные, если это не текущая запись.
if( $related_pages = get_field( 'data' ) ):
foreach( $related_pages as $page ):
the_field( 'special_offer', $page->ID );
endforeach;
endif;
Всё это взято из документации ACF, которая довольно подробна и содержит множество примеров.
РЕДАКТИРОВАНИЕ
Если вы хотите использовать шаблонные теги, которым необходима глобальная переменная $post
, вам нужно использовать функцию setup_postdata(), чтобы заполнить её данными записи. Обратите внимание, что get_the_excerpt
не принимает ID записи, в отличие от get_the_title
.
if( $related_pages = get_field( 'data' ) ):
foreach( $related_pages as $post ): // для работы необходимо использовать $post
setup_postdata( $post );
the_title();
the_excerpt();
endforeach;
wp_reset_postdata(); // восстанавливаем глобальную переменную $post для внешнего цикла
endif;

Извините за задержку с ответом и большое спасибо за ваш ответ!
По какой-то причине get_the_excerpt или content просто получает контент со страницы, на которой вы находитесь. Не подскажете, что может быть причиной этого, или я делаю что-то не так? (Я обновил исходное сообщение).
Как ни странно, заголовок он получает нормально, но не контент :S
