You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在WordPress Timber中为自定义分类筛选器添加默认全选选项

解决自定义分类筛选下拉添加默认“全部”选项的问题

问题背景

我创建了slug为typology、名称为Typologies的自定义事件分类,包含子项type 1、type 2、type 3。已通过Timber实现分类筛选下拉,但尝试添加默认选中的“All Typologies”选项未成功。

原代码问题点

  • PHP中传递的变量名是terms-typology,但Twig模板里循环的是typology,变量名不匹配,导致分类项无法正确渲染
  • 错误地通过new Timber\Term('typology')获取分类对象来生成默认选项,逻辑不符合需求

可行解决方案

步骤1:修正PHP代码(保持分类数据传递正确)

无需修改原有获取分类的逻辑,确保变量名清晰:

// 获取typology分类下的所有子项
$context['typology_terms'] = Timber::get_terms('typology');
// 可选:传递分类名称到模板,避免硬编码
$context['typology_name'] = 'Typologies';

步骤2:修改Twig模板,添加默认选项

在循环前插入默认选中的选项,value设为空字符串(用于后端判断未筛选状态),然后循环渲染分类子项:

<select>
  <!-- 默认选中的全部选项 -->
  <option selected value="">All {{ typology_name }}</option>
  <!-- 循环渲染分类子项 -->
  {% for term in typology_terms %}
     <option value="{{ term.slug }}">{{ term.name }}</option>
  {% endfor %}
</select>

补充说明

  • 默认选项的value设为空字符串,后端处理筛选逻辑时,若获取到空值则返回所有文章
  • 若不需要单独传递分类名称,也可以直接硬写文本:<option selected value="">All Typologies</option>
  • 循环中使用term.slug作为value更符合筛选逻辑(后端通常通过slug筛选),而非直接输出term对象

内容的提问来源于stack exchange,提问作者Paraiso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 22:25:41