如何获取taxonomy中的ACF image field来展示

How to get ACF image field in taxonomy to show

我有一个名为 category_image 的自定义字段,它是类别的图像字段。

我有另一个名为 categories_to_show 的自定义字段,它是主页的分类法 select 要显示的类别。

categories_to_show 工作正常,但我很难获得 category_image。如果我 print_r 它不在数组中。

在我的页面-home.php 文件中:

$context['categories_to_show'] = get_field('categories_to_show') ?? '';

在我的页面-home.twig文件中:

{% for c in categories_to_show %}
    {{c.name}}
    {{c.category_image}}
{% endfor %}

c.name 有效,c.category_image 无效。但并不奇怪,因为它不在 categories_to_show 数组中:

Array ( [0] => WP_Term Object ( [term_id] => 4 [name] => Technology [slug] => technology [term_group] => 0 [term_taxonomy_id] => 4 [taxonomy] => category [description] => [parent] => 0 [count] => 1 [filter] => raw ) [1] => WP_Term Object ( [term_id] => 1 [name] => Uncategorized [slug] => uncategorized [term_group] => 0 [term_taxonomy_id] => 1 [taxonomy] => category [description] => [parent] => 0 [count] => 1 [filter] => raw ) )

谁能给我指出正确的方向?

您的问题似乎是您有一个 WP_Term 对象,但您需要一个 Timber\Term 对象以便您可以更轻松地访问元数据。

在 PHP 中,您可以使用 Timber::get_terms() 将术语 ID 数组或 WP_Term 个对象转换为 Timber\Term 个对象。

PHP

$context['categories_to_show'] = get_field('categories_to_show')
    ? Timber::get_terms( get_field('categories_to_show') )
    : [];

然后,如果您遍历类别,则可以访问 Timber\Term.

可用的所有方法

您可以使用 c.category_image 来访问 category_image 元值,但我会使用 meta() 函数以获得更面向未来的方式。

树枝

{% for c in categories_to_show %}
    {{ c.name }}
    {{ c.meta('category_image') }}
{% endfor %}

根据图像的元值包含的内容,您可能还必须先将其转换为 Timber\Image 对象,然后才能使用它。

{# Full #}
{{ Image(c.meta('category_image')).src }}

{# Large size #}
{{ Image(c.meta('category_image')).src('large') }}

专业提示 – 如果您选择 return 仅图像字段的图像 ID 而不是 ACF 字段设置中的图像数组,您可能会节省一些性能.

当然,如果您更喜欢使用 ACF return 的图像阵列,那也很好。