Custom Field Suite重复字段无法与Timber插件配合使用求助
解决Timber中Custom Field Suite(CFS)重复字段无法渲染的问题
先从基础排查入手,再针对性调整写法:
1. 先确认核心数据是否能正常获取
在Twig模板里先添加调试代码,看看字段数据是否存在:
{{ dump(post.meta('knowFields')) }}
如果输出null或空数组,说明根本没拿到数据,先解决这个问题:
- 核对CFS后台重复字段的机器名是否是
knowFields(注意大小写,CFS字段名区分大小写) - 确认当前
post对象是目标文章:比如在分类页里可能误拿了全局post,要确保post是包含该自定义字段的文章对象 - 检查文章编辑页里,该重复字段是否已经填写并保存了内容
2. 改用CFS原生函数结合Timber的写法
Timber的post.meta()对部分CFS字段结构支持可能有偏差,试试在PHP模板文件(比如single.php或自定义模板)里用CFS原生函数获取数据,再传给Twig:
$context = Timber::context(); $post = Timber::get_post(); // 用CFS原生方法获取重复字段数据 $context['know_fields'] = CFS()->get('knowFields', $post->ID); $context['post'] = $post; Timber::render('你的模板文件名.twig', $context);
然后在Twig模板里渲染:
{% if know_fields is not empty %} {% for field in know_fields %} <article class="content-box"> <figure class="content-box__ico"> <img src="{{ field.fieldIco }}" alt="" class="content-box__ico--gfx"> </figure> <p class="content-box--desc">{{ field.fieldDesc }}</p> </article> {% endfor %} {% else %} <p>暂无相关内容</p> {% endif %}
3. 核对子字段的机器名
确保fieldIco和fieldDesc完全匹配CFS后台设置的子字段机器名,大小写、驼峰/下划线都不能错——比如CFS里子字段机器名是field_ico,你写fieldIco就会取不到值。
4. 清除缓存
清掉WordPress缓存、Timber的编译缓存,避免旧数据干扰渲染结果。
内容的提问来源于stack exchange,提问作者Mateusz Pieszczyk
相关产品推荐
相关产品推荐

