提问者:小点点

如何在WordPress插件中为TWIG添加沙盒扩展?


我想添加沙箱扩展来评估使用木材WordPress不受信任的代码(包括使用作曲家,但我在使用插件时得到相同的结果)。

以下(简化)代码会导致致命错误。

add_filter('timber/twig', function($twig){

    $filters = array_diff(array_keys($twig->getFilters()), ['function']);

    $policy = new \Twig\Sandbox\SecurityPolicy([], $filters, [], [], []);
    $twig->addExtension(new \Twig\Extension\SandboxExtension($policy, true));
    
    return $twig;
});

错误是:"致命错误:未捕获异常:无法注册扩展"沙盒",因为扩展已经初始化。"

如果应用的过滤器是木材/细枝或细枝应用过滤器,则没有区别。

这是不正确的地方添加此扩展?它似乎只在调用Timber::compile_string时执行。

我在PHP 7.3. x上使用最新版本的WordPress和木材


共1个答案

匿名用户

$twig-