Timber中使用Twig自定义rot13过滤器报错:Unknown filter
解决Timber中Twig过滤器“Unknown filter”的问题
兄弟,你踩了Timber新手常犯的一个小坑——你自己手动创建了一个Twig_Environment实例并添加过滤器,但Timber根本没在使用这个实例!Timber框架已经帮我们管理好了Twig环境的初始化流程,直接自己新建实例完全是白费功夫,模板里根本调用不到这个过滤器。
正确的过滤器注册方式
你需要通过Timber提供的timber/twig钩子来注册自定义过滤器,这是官方推荐的标准做法。把你原来的代码替换成下面这段,放到主题的functions.php里:
add_filter('timber/twig', function($twig) { // 注册rot13过滤器 $twig->addFilter(new Twig_SimpleFilter('rot13', function($string) { return str_rot13($string); })); return $twig; });
为什么这样能行?
- 当Timber初始化它自己的Twig环境时,会触发
timber/twig钩子,并把当前的Twig实例传递给回调函数 - 你在回调里把自定义过滤器添加到这个正在被Timber使用的实例上,模板就能识别到这个过滤器了
验证效果
现在回到你的view.twig文件,使用{{ 'Twig'|rot13 }}就会正常输出Gvvt,不会再抛出“Unknown filter”的致命错误啦!
内容的提问来源于stack exchange,提问作者user5853892
相关产品推荐
相关产品推荐

