如何获取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 的图像阵列,那也很好。
我有一个名为 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 的图像阵列,那也很好。