Wordpress - 我无法在 Twig/Timber 中显示关系字段的所选项目的标题
Wordpress - I can't display the title of a relationship field's selected item in Twig/Timber
我是 Twig/Timber 的新手。我有一个 post,它有一个 ACF 关系字段,允许您从特定的 post 类型中进行选择(称之为 "training")。假设我在培训中有一个 post,名为 "Aerobics",这就是我在关系字段中选择的那个。在页面上,我想显示健美操的标题和日期。
在 Timber 中,我将其定义为
$context['related_training'] = get_field('related_pd_interactive_training');
不知道怎么显示。这两个 return 都是正确的,但是当我尝试在关系字段中显示项目的标题时,它什么也得不到
{% for trainings in post.meta('related_pd_interactive_training') %}
{{ WHAT DO I DO HERE }}
{% endfor %}
或
{% if post.related_pd_interactive_training %}
{{ OR HERE }}
{% endif %}
当你直接使用get_field()
时,它适用于单一模板,但它不适用于存档模板,因为你没有传递post ID。
$context['related_training'] = get_field( 'related_pd_interactive_training' );
要使其以 Timber 方式工作,您可以按以下方式进行:
$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 字段中定义的 return 值。要将 training
变成 Timber post,您可以在其中访问标题和日期,您有多种选择:
1。在 PHP
中准备
要在 PHP 中准备数据,您可以使用 array_map
循环遍历 related_pd_interactive_training
中保存的 post ID,并将它们转换为 Timber posts 通过调用 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' ) );
要更进一步,您可以通过 Extending Timber.
将该函数放入一个新方法中
2。在 Twig
中使用 Post()
一个较短的方法是在 Twig 中使用 Post()
,它会变成一个 post ID 或 一个 [=45] 的数组=] 您传递给 Timber posts.
的 ID
{% for training in Post(post.meta('related_pd_interactive_training')) %}
{{ training.title }}
{{ training.date }}
{% endfor %}
我是 Twig/Timber 的新手。我有一个 post,它有一个 ACF 关系字段,允许您从特定的 post 类型中进行选择(称之为 "training")。假设我在培训中有一个 post,名为 "Aerobics",这就是我在关系字段中选择的那个。在页面上,我想显示健美操的标题和日期。
在 Timber 中,我将其定义为
$context['related_training'] = get_field('related_pd_interactive_training');
不知道怎么显示。这两个 return 都是正确的,但是当我尝试在关系字段中显示项目的标题时,它什么也得不到
{% for trainings in post.meta('related_pd_interactive_training') %}
{{ WHAT DO I DO HERE }}
{% endfor %}
或
{% if post.related_pd_interactive_training %}
{{ OR HERE }}
{% endif %}
当你直接使用get_field()
时,它适用于单一模板,但它不适用于存档模板,因为你没有传递post ID。
$context['related_training'] = get_field( 'related_pd_interactive_training' );
要使其以 Timber 方式工作,您可以按以下方式进行:
$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 字段中定义的 return 值。要将 training
变成 Timber post,您可以在其中访问标题和日期,您有多种选择:
1。在 PHP
中准备要在 PHP 中准备数据,您可以使用 array_map
循环遍历 related_pd_interactive_training
中保存的 post ID,并将它们转换为 Timber posts 通过调用 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' ) );
要更进一步,您可以通过 Extending Timber.
将该函数放入一个新方法中2。在 Twig
中使用 Post()一个较短的方法是在 Twig 中使用 Post()
,它会变成一个 post ID 或 一个 [=45] 的数组=] 您传递给 Timber posts.
{% for training in Post(post.meta('related_pd_interactive_training')) %}
{{ training.title }}
{{ training.date }}
{% endfor %}