我是新来的Twig/Timber。我有一个帖子,它有一个ACF关系字段,允许您从特定的帖子类型中进行选择(称之为“培训”)。比如说,我有一个叫做“健美操”的训练岗位,这就是我在恋爱领域的选择。在页面上,我想显示健美操的标题和日期。
在“木材”中,我把它定义为
$context['related_training'] = get_field('related_pd_interactive_training');
我不知道的是怎么展示它。这两个都返回true,但是当我试图在Relationship字段中显示该项的标题时,它将一无所获。
{% for trainings in post.meta('related_pd_interactive_training') %}
{{ WHAT DO I DO HERE }}
{% endfor %}
或
{% if post.related_pd_interactive_training %}
{{ OR HERE }}
{% endif %}
发布于 2019-11-03 15:24:53
当您直接使用get_field()
时,它将对单个模板起作用,但是它不会在归档模板中工作,因为您不传递post ID。
$context['related_training'] = get_field( 'related_pd_interactive_training' );
为了使它以木材的方式工作,您可以这样做:
$context = Timber::get_context();
$context['post'] = Timber::get_post();
然后,您可以使用post的meta()
函数:
{% for training in post.meta('related_pd_interactive_training') %}
{{ dump(training) }}
{% endfor %}
现在,培训可能只是一个post ID,这取决于您在ACF字段中定义的返回值。要将training
转换为木材帖子,您可以访问标题和日期,您有多个选项:
1.用PHP编写
要在PHP中准备数据,可以使用array_map
循环保存在related_pd_interactive_training
中的post ID,并通过调用new Timber\Post()
将它们转换为Timber。
$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' ) );
为了更进一步,您可以通过延展木材将该函数放入一个新方法中。
2.在Twig中使用Post()
一种较短的方法是在Twig中使用Post()
,它将一个post ID或传递给Timber的一系列post ID转到Twig中。
{% for training in Post(post.meta('related_pd_interactive_training')) %}
{{ training.title }}
{{ training.date }}
{% endfor %}
https://stackoverflow.com/questions/58668450
复制相似问题