gpt4 book ai didi

Timber Twig 和 ACF 从分类页面上的自定义字段获取图像

转载 作者:行者123 更新时间:2023-12-03 15:50:34 29 4
gpt4 key购买 nike

就像标题一样,我正在尝试从附加到分类的自定义字段中获取图像。我目前有一个称为城市的分类法,该术语类似于新墨西哥州的阿尔伯克基。我用 ACF 创建了一个图像自定义字段('city_hero_image'),并选择了 ID 作为返回值。查看源代码,在 src 标记中它显示“未知”,并且在执行 print_r 时它基本上返回一个空对象数组。

我的分类-city.php 是

$context['posts'] = Timber::get_posts();
$context['categories'] = Timber::get_terms('city');

$cover_image_id = get_field('city_hero_image');
$context['cover_image'] = new TimberImage($cover_image_id);
Timber::render( $templates, $context );

在我的分类-city.twig 我有
<img src="{{cover_image.get_url}}" class="img-responsive" alt="">

最佳答案

默认 WordPress 中的 get_field

当你运行 get_field ,该函数将尝试猜测它应该从上下文中查找自定义字段的对象。上下文通常是循环。

所以,如果你运行 $cover_image_id = get_field( 'city_hero_image' ); , ACF 将尝试获取自定义字段 city_hero_image从当前帖子的 ID,它无法找到。也没有city_hero_image在帖子上定义,它是根据您的术语定义的。

  • 如果你运行 get_field在循环内部,它将使用当前帖子的 ID 来加载一个字段。但是,使用 Timber,您永远不会进入 The Loop。木材实际上是用来摆脱循环的。
  • 如果您想从术语对象加载字段(在您的情况下为 city_hero_image ),您需要明确告诉 get_field使用 get_field( 'city_hero_image', 'city_termid' ) 查看该分类,而 termid 将是您想要数据的术语的 ID。

  • 木材中的 get_field

    在木材方面, get_field工作有点不同。 Timber 将使用自定义字段作为属性填充帖子或术语对象。

    如果您有自定义字段 city_hero_image在您的分类中,您可以通过多种方式访问​​它:

    在 PHP
  • 直接通过其属性:$category->city_hero_image
  • 通过get_field Timber\Term 对象的方法:$category->get_field('city_hero_image)

  • 在 Twig
  • 直接通过其属性:{{ category.city_hero_image }}
  • 通过gef_field方法:{{ category.get_field('city_hero_image') }}

  • 这同样适用于 Timber\Post 对象上的 ACF 字段。您只需调用 get_field当您想要访问字段类型为 Repeater 或 Flexible Content 的数据时显式访问。

    把它放在一起

    让我们看看你的例子。您首先需要获取显示的术语。对于存档页面,您可以使用函数 get_queried_object() ,这将根据访问的文件返回一个对象:
  • 对于学期文件,它将是 WP_Term目的。
  • 对于帖子类型的文件,它将是 WP_Post_Type目的。
  • 对于作者文件,它将是 WP_User目的。
  • 等等...

  • 你有一个术语存档( taxonomy-city.php ),所以它会是
    $term = new \Timber\Term( get_queried_object() );
    $cover_image = $term->city_hero_image;

    $context['term'] = $term;
    $context['cover_image'] = new \Timber\Image($cover_image);

    关于Timber Twig 和 ACF 从分类页面上的自定义字段获取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42725959/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com