Когда вы используете get_field()
напрямую, это будет работать для отдельных шаблонов, но не будет работать в архивных шаблонах, потому что вы не передаете идентификатор записи.
$context['related_training'] = get_field( 'related_pd_interactive_training' );
Чтобы сделать этоРаботая с Timber, вы сделаете это следующим образом:
$context = Timber::get_context();
$context['post'] = Timber::get_post();
Затем вы можете использовать функцию meta()
сообщения:
{% for training in post.meta('related_pd_interactive_training') %}
{{ dump(training) }}
{% endfor %}
Теперь обучение, вероятно, толькоидентификатор поста, в зависимости от того, что вы определили как возвращаемое значение в поле ACF. Чтобы превратить training
в пост Timber, где вы можете получить доступ к заголовку и дате, у вас есть несколько вариантов:
1. Подготовьте его в PHP
Чтобы подготовить свои данные в PHP, вы можете использовать array_map
для циклического перебора идентификаторов сообщений, сохраненных в related_pd_interactive_training
, и превращать их в сообщения Timber, вызывая new Timber\Post()
.
$context = Timber::get_context();
$post = Timber::get_post();
$context['trainings'] = array_map( function( $training ) {
return new Timber\Post( $training );
}, $post->meta( 'related_pd_interactive_training' ) );
Чтобы продвинуться еще дальше, вы можете поместить эту функцию в новый метод с помощью Extennding Timber .
2. Используйте Post () в Twig
Более короткий способ сделать это - использовать Post()
в Twig, который превращает идентификатор записи или в массив идентификаторов записей, которые вы передаетеДеревянные посты.
{% for training in Post(post.meta('related_pd_interactive_training')) %}
{{ training.title }}
{{ training.date }}
{% endfor %}