Компиляция нескольких шаблонов веток с использованием функций Timber :: compile () дважды. php дважды, что означает, что пользовательские функции веток переименовываются - PullRequest
0 голосов
/ 18 января 2020

Я пытаюсь разослать письма после отправки формы WordPress. Эти письма создаются с использованием веток и Timber для WordPress. Проблема в том, что для каждого письма я компилирую шаблон, используя Timber::compile($template, $context).

. Это прекрасно работает для первого письма, но вылетает во втором письме из-за пользовательских функций, которые я добавляю в веточку в своих функциях. php файл. Этот код выглядит следующим образом:

$twig->addFunction(new Timber\Twig_Function('load_js', 'load_js'));
    function load_js($handle) {
        $url = get_template_directory_uri() . "/static/js/" . $handle;
        $version = wp_get_theme()->get('Version');
        wp_enqueue_script($handle, $url, array(), $version, true);
    }       
    $twig->addFunction(new Timber\Twig_Function('load_js_url', 'load_js_url'));
    function load_js_url($name, $url) {
        $version = wp_get_theme()->get('Version');
        wp_enqueue_script($name, $url, array(), NULL, true);
    }

Это приводит к cra sh со следующей ошибкой: Cannot redeclare load_js() (previously declared in...

Исправление будет проверять, если функция уже объявлена, но это не работает, так как функция $twig->getFunction($name) в Twig \ Environment также пытается инициализировать расширения, прежде чем дать мне значение true или false.

Есть ли способ выполнить sh рендеринг большего количества шаблонов в одном запрос, без вызова функций дважды?

Заранее спасибо!

...