Подключаем шаблонизатор Twig к WordPress. Часть 1.
Добавляем шаблонизатор Twig как плагин для WordPress.
Возможно, многие из вас сейчас крутят у веска пальцем и задаются вопросом – «Зачем это нужно?», и возможно вполне правы, наверняка это весьма сумасшедшая идея, но я все же скажу – «а почему бы и нет?».
Для начала познакомимся с Twig. Что это такое? – Twig это PHP шаблонизатор нового поколения, написанный Fabien Potencier, создателем фреймворка Symfony, в последней версии которого он как раз используется.
Как говорится на официальном сайте, данного чуда:
Быстрый – Twig компилирует шаблоны и при желании складывает их в Кеш, при этом скомпилированный PHP код полностью соответствует ООП, оптимизирован и скорость его последующей работы равна скорости работы обычного PHP кода.
Безопасный – Twig имеет изоляционный режим (режим песочницы), для работы с ненадежным кодом шаблона. Пользователь, имеющий доступ к шаблону, и возможность его редактировать не сможет воспроизвести произвольный код, или получить доступ к данным не касающихся непосредственно его, и нанести ущерб системе в целом.
Гибкий – Twig оснащен гибким лексическим и синтаксическим анализатором кода, это позволяет разработчику определять собственные пользовательские теги и фильтры.
И множество прочих достоинств, таких как: краткость, ориентированный на шаблоны синтаксис, полнофункциональный, легок в изучении, сообщения об ошибках и т.д.
Думаю предельно понятно почему я решил использовать именно твиг в качестве шаблонизатора для CMS WordPress, кроме всего это будет способствовать организации кода в шаблоне. Но главной причиной можно считать любопытство и интерес к данной задумке, удовлетворение не преодолимого желания привинтить твиг к своему блогу.
Я не очень люблю смешивать HTML и PHP теги, по этому в самописных проектах я предпочитаю использовать паттерн MVC, но в данном случаи такой возможности нет. Поэтому, после долгих размышлений, о том как реализовать мою идею, было принято решение написать плагин, который будет обеспечивать все необходимые задачи и позволит использовать twig.
Сначала я создал папку с именем плагина wp_twig_engine, затем в неё копируем папку Lib шаблозатора, скачать шаблонизатор с офф. сайта, таким образом, мы превратили весь набор скриптов твига в плагин для WP.
Затем создаем главный файл плагина: WP-twig.php, с содержимым
<?php /* Plugin Name: WordPress Twig templating engine Version: 1.0 Plugin URI: http://rche.ru */ //Main twig library autoloader file require_once dirname(__FILE__) . '/lib/Twig/Autoloader.php'; //My custom class made, I also want it to be autoloaded require_once dirname(__FILE__) . '/Wp_TwigEngine.php'; function twigAutoLoad() { Twig_Autoloader::register(); Wp_TwigEngine_Autoloader::register(); } add_action('init', 'twigAutoLoad'); ?> |
Далее добавляем автозагрузку пользовательского класса, создаем файл в директории плагина: Wp_TwigEngine.php
<? class Wp_TwigEngine_Autoloader { static public function register() { ini_set('unserialize_callback_func', 'spl_autoload_call'); spl_autoload_register(array(new self, 'autoload')); } static public function autoload($class) { if (0 !== strpos($class, 'Wp_TwigEngine')) { return; } if (file_exists ( $file = dirname(__FILE__) . '/../' . str_replace(array('_', "\0"), array('/', ''), $class) . '.php')) { echo($file); exit; require $file; } } } |
Таким образом получаем плагин обрабатывающий шаблоны Twig, но для этого его еще предстоит немного настроить, для работы с основной папкой шаблона WP. Об этом в следующей статье.

Автор:







Ждем продолжения статьи, идея хоть и кажется безумной, но интересно) в одно время думал о подключении смарти, но так и не реализовал это на деле…