Php Twig“U Error”的语法;“未知过滤器”;用树枝过滤木材

Php Twig“U Error”的语法;“未知过滤器”;用树枝过滤木材,php,wordpress,twig,timber,Php,Wordpress,Twig,Timber,这必须很简单,但我看不出有什么不对。我正在使用WordPress插件Timber中的Twigg1.34的简单过滤器示例 我补充说 // an anonymous function $filter = new Twig_SimpleFilter('rot13', function ($string) { return str_rot13($string); }); 及 到我的主题的functions.php文件 但是在my view.Twig文件中使用{{'Twig'| rot13}}会

这必须很简单,但我看不出有什么不对。我正在使用WordPress插件Timber中的Twigg1.34的简单过滤器示例

我补充说

// an anonymous function
$filter = new Twig_SimpleFilter('rot13', function ($string) {
    return str_rot13($string);
});

到我的主题的functions.php文件

但是在my view.Twig文件中使用
{{'Twig'| rot13}}
会产生致命错误

PHP Fatal error:  Uncaught exception 'Twig_Error_Syntax'
with message 'Unknown "rot13" filter' in view.twig
还有一个通知

Undefined variable: loader in functions.php
使用像
{{'Twig'| lower}}
这样的过滤器可以正常工作


是否需要以其他方式将函数添加到functions.php?

根据文档(标题:添加到Twig

应该这样做(在
functions.php
)中):


我会说是的,很可能你需要。也许它不是view.twig文件的正确位置。好吧,但如何做到这一点是我的问题。从我从文档中读到的内容来看,你做的一切都是正确的。我认为只有在哪里做才不太清楚(对我来说也是如此)。老实说,我觉得这个方法不错。没错,文档并不清楚php函数的去向。这里列出了一个
global
函数,它“与任何其他模板变量类似,只是它在所有模板和宏中都可用”,但不清楚如何使用它。这是一个提示<代码>$loader未定义。您需要在定义了
$loader
的地方编写代码,否则它将无法工作。啊,谢谢!把它变成一个完整的函数是有意义的。但是在
返回str_rot13($string)
@BlueDogRanch修复后,我立即出现了一个解析错误,忘记在行的末尾加分号:DCool!工作完美。现在我知道如何处理我前面的问题了@BlueDogRanch很高兴能帮上忙,尝试一个更复杂的过滤器:(想看看我以前的问题吗?
Undefined variable: loader in functions.php
add_filter('timber/twig', function($twig) {
   $twig->addExtension(new Twig_Extension_StringLoader());

   // add Your filters here
   $twig->addFilter(
     new Twig_SimpleFilter(
       'rot13', 
       function($string) {
         return str_rot13($string);
       }
     )
   );
   // or simply: 
   // $twig->addFilter(new Twig_SimpleFilter('rot13', 'str_rot13'));

   $twig->addFilter(
     new Twig_SimpleFilter(
       'hello', 
       function($name) {
         return 'Hello, '.$name;
       }
     )
   );

   return $twig;
});