Php 在这种情况下,将循环中的ID传递给WP函数

Php 在这种情况下,将循环中的ID传递给WP函数,php,wordpress,twig,timber,Php,Wordpress,Twig,Timber,在Timber/Twig中,我使用以下方式显示事件列表: page-events.php: $context = Timber::get_context(); $events = array( 'post_type' => 'event', 'posts_per_page' => 10, ); $context['events'] = Timber::get_posts( $events ); Timber::render( array( 'page-' . $

在Timber/Twig中,我使用以下方式显示事件列表:

page-events.php:

$context = Timber::get_context();

$events = array(
    'post_type' => 'event',
    'posts_per_page' => 10,
);

$context['events'] = Timber::get_posts( $events );

Timber::render( array( 'page-' . $post->post_name . '.twig', 'page-home.twig' ), $context );
page-events.twig

{% for event in events %}
    <li>{{ event.name }} - *country* </li>
  {% endfor %}
如何使用木材将ID传递给
获取术语($ID,'country')

我已经搜索了木材文档并在谷歌上搜索了一下,但找不到答案


我尝试了
{{get_the_term(event.id,'country')}}
{%get_the_term(event.id,'country')%}
以及类似的方法,但没有成功。

如果您想在Twig中使用PHP函数,您需要使用
function()
fn()
,如中所述

对您来说,这意味着在Twig中,您可以使用

{{ fn( 'get_the_terms', event.id, 'country' ) }}
您通过
event.ID
传递ID的方法是正确的。但是,该函数返回一个数组,不能这样显示。您需要将其转换为字符串或循环。以下是如何使用Twig过滤器仅显示该数组中的第一个国家:

如果您有多个国家,可以将它们转换为逗号分隔的列表,其中包含:

还有一件事我们可以优化。我们可以使用可用于
Timber\Post
对象的方法,而不是使用
get\u the_terms()

{% for event in events %}
    <li>{{ event.name }} - {{ event.terms('country')|first }}</li>
{% endfor %}
{%for events%}
  • {{event.name}}-{event.terms('country')|first}
  • {%endfor%}
    {{ fn( 'get_the_terms', event.id, 'country' )|first }}
    
    {{ fn( 'get_the_terms', event.id, 'country' )|join(', ') }}
    
    {% for event in events %}
        <li>{{ event.name }} - {{ event.terms('country')|first }}</li>
    {% endfor %}