Blu*_*nch 5 php wordpress twig timber
这必须很简单,但我看不出有什么问题。我正在使用https://twig.symfony.com/doc/1.x/advanced.html#filters上的简单过滤器示例和 Twig 1.34 in Timber,一个 WordPress 插件。
我加了
// an anonymous function
$filter = new Twig_SimpleFilter('rot13', function ($string) {
return str_rot13($string);
});
Run Code Online (Sandbox Code Playgroud)
和
$twig = new Twig_Environment($loader);
$twig->addFilter($filter);
Run Code Online (Sandbox Code Playgroud)
到我的主题的functions.php 文件。
但是{{ 'Twig'|rot13 }}
在我的 view.twig 文件中使用会出现致命错误
PHP Fatal error: Uncaught exception 'Twig_Error_Syntax'
with message 'Unknown "rot13" filter' in view.twig
Run Code Online (Sandbox Code Playgroud)
和通知
Undefined variable: loader in functions.php
Run Code Online (Sandbox Code Playgroud)
使用类似的过滤器{{ 'Twig'|lower }}
可以正常工作。
我是否需要以不同的方式将函数添加到 functions.php?
根据此处的文档(标题:添加到 Twig)
应该像这样完成(在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;
});
Run Code Online (Sandbox Code Playgroud)