使用Twig与WordPress时,如何判断文章是否属于指定分类?
解决Twig中判断文章分类slug无效的问题
嘿,作为Twig新手遇到这个问题太正常了,我来帮你捋清楚怎么搞定它!
首先,你提到能显示category.slug但if判断无效,大概率是踩了「WordPress文章的分类通常是数组而非单个对象」的坑——直接用category.slug其实是取数组的第一个元素,自然没法准确判断是否包含in-the-news分类。
结合你用的Twig 1.34版本,给你两种靠谱的解决写法:
情况1:文章仅关联单个分类(确认category是对象)
如果你的文章确实只会绑定一个分类,直接用严格相等判断就行,注意slug要用单引号包裹:
{% if category.slug == 'in-the-news' %} <span>{{ category.name }}</span> {% endif %}
情况2:文章可能关联多个分类(category是数组)
这是WordPress里更常见的场景,需要遍历或过滤分类数组:
写法一:遍历分类列表匹配
逐个检查每个分类的slug,匹配到目标分类就显示:
{% for cat in category %} {% if cat.slug == 'in-the-news' %} <span>{{ cat.name }}</span> {% endif %} {% endfor %}
写法二:用Twig过滤器快速判断并获取分类
先把所有分类的slug提取成数组,检查是否包含目标slug,再过滤出对应的分类对象:
{% if category|map(c => c.slug) contains 'in-the-news' %} {% set news_category = category|filter(c => c.slug == 'in-the-news')|first %} <span>{{ news_category.name }}</span> {% endif %}
排查小技巧
如果还是无效,可以先打印category的结构看看,帮你定位问题:
{{ dump(category) }}
内容的提问来源于stack exchange,提问作者user5853892
相关产品推荐
相关产品推荐

