将 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
我正在使用 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