Twig/Timber实现WordPress文章按ACF字段排序无匹配文章时报错
问题原因
该报错是因为当WordPress查询无匹配文章时,模板拿到的posts变量为null或空值,Twig的sort过滤器无法对非迭代的空值对象执行排序操作,进而抛出类型错误。
修复方案
方案1:利用Twig for循环的else分支兼容空场景
直接给posts变量加空值默认兜底,空状态下自动走else分支提示,无需额外写if判断:
{% for post in posts|default([]) | sort((a, b) => b.litter_born <=> a.litter_born) %} {# 原有拉取文章数据的逻辑 #} {% else %} <p>暂无匹配的宠物文章</p> {% endfor %}
方案2:额外兼容部分文章无litter_born字段的场景
如果存在部分宠物文章未设置litter_born ACF字段的情况,可以在排序逻辑里给字段也加默认值,避免二次报错:
{% for post in posts|default([]) | sort((a, b) => (b.litter_born|default(0)) <=> (a.litter_born|default(0))) %} {# 原有拉取文章数据的逻辑 #} {% else %} <p>暂无匹配的宠物文章</p> {% endfor %}
内容的提问来源于stack exchange,提问作者ShrockCo
相关产品推荐
相关产品推荐

