首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Timber中,将循环中的ID传递给WP函数

在Timber中,将循环中的ID传递给WP函数
EN

Stack Overflow用户
提问于 2019-02-20 23:40:13
回答 1查看 587关注 0票数 0

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

page-events.php:

代码语言:javascript
复制
$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

代码语言:javascript
复制
{% for event in events %}
    <li>{{ event.name }} - *country* </li>
  {% endfor %}

我还想展示与该事件相关的国家/地区。这是作为术语存储的。在WordPress中,我通常会使用以下命令来检索:

代码语言:javascript
复制
$country = get_the_terms( get_the_ID(), 'country');
echo $country[0]->name;

如何使用Timber将ID传递给get_the_terms($id, 'country')

我已经搜索了木材文档和谷歌,但没有找到答案。

我已经尝试过{{ get_the_term( event.id, 'country' ) }}{% get_the_term( event.id, 'country' ) %}以及类似的东西,但都没有成功。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-21 14:42:35

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

对于您来说,这意味着在Twig中,而不是在{{ get_the_term( event.id, 'country' ) }}中,您可以使用

代码语言:javascript
复制
{{ fn( 'get_the_terms', event.id, 'country' ) }}

你在正确的轨道上通过event.id传递ID。但是,该函数返回一个数组,您不能这样显示该数组。您需要将其转换为字符串或在其上循环。下面是如何使用Twig的first过滤器仅显示该数组中的第一个国家:

代码语言:javascript
复制
{{ fn( 'get_the_terms', event.id, 'country' )|first }}

如果您有多个国家,可以使用join将它们转换为逗号分隔的列表

代码语言:javascript
复制
{{ fn( 'get_the_terms', event.id, 'country' )|join(', ') }}

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

代码语言:javascript
复制
{% for event in events %}
    <li>{{ event.name }} - {{ event.terms('country')|first }}</li>
{% endfor %}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54790060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档