将 ACF 图库与 Timber/Twig 一起使用

Using an ACF gallery with Timber/Twig

我正在使用 Timber(Twig 的 WordPress 插件实现)和 Advanced Custom Fields 插件库字段。我在自定义 post 类型下有一个工作画廊,因此 ACF 和 Timber 在网站的其他地方工作,但不适用于标准页面。当我尝试将画廊添加到页面时,我最终得到的只是 img src 标签的空标记。

我在模板文件夹的 page.php 中有这个:

$context = Timber::get_context();
$page = new TimberPost();

$context['page'] = $page;

if ($photos = $page->get_field('photos')) {
    $context['photos'] = $photos;
}

我在主题的 templates/page/ 文件夹中的 default.twig 中有这个(为简单起见删除了 html):

{% if page.photos %}

{% for p in page.photos %}

<img src="{{ p.sizes.gallery|relative }}" alt="{{ p.alt }}" /> 

{{ p.caption }}

{% endfor %} 

{% endif %}

这导致页面源 <img src="" alt="">

如果我在 for p in page.photos 语句中使用 {{ dump(photos) }},它会转储我在后端的 Gallery 字段中输入的图像数组。所以图像数组存在并且正在输出。 relative 扩展适用于所有 post 类型;删除它在这里没有区别。

那么为什么 p.sizes.gallery|relative 函数不输出每个图像的 url 和标题?

您将数据附加到 $context['photos'] 所以我相信您应该更改代码以检查 if photos 并迭代为 for p in photos