Разработчики тем наконец-то могут порадоваться. У них появится возможность передавать аргументы в шаблоны через разные базовые функции загрузки шаблонов. Энрико Сорчинелли объявил об этих изменениях в блоге Make Core в прошлую пятницу.
Изначально эта функция была предложена Скоттом Кингсли Кларком в 2012 году. За прошедшие годы тикет получил с десяток патчей. Он закрывался, потом снова открывался, происходили споры, связанные с тем, должен ли такой функционал вообще присутствовать в ядре. Энрико был основным сторонником этой идеи, и именно он старался поддерживать тикет открытым и обсуждаемым.
В релизе WordPress 5.5 разработчики покрыли некоторые старые запросы функций. Несколько недель назад был закрыт 11-летний тикет, позволяющий обновлять темы и плагины через ZIP-архив. Разработчики ядра также закрыли 9-летний тикет, связанный с CSS-хаком в Internet Explorer 6 (так называемый star hack). Однако одним из самых интересных нововведений для авторов тем является возможность управления данными, передаваемыми от одного шаблона к другому.
Обычно в PHP переменные могут передаваться из файла в файл, поскольку они остаются в той же самой области видимости. Однако добавление файла может происходить за пределами области видимости – к примеру, когда файл подключается внутри функции. Область видимости в таком случае ограничена функцией. Так работает система шаблонов в WordPress. Это не всегда плохо. Однако в итоге у разработчиков тем нет встроенного способа передачи данных из одного шаблона в другой.
Представьте себе, что вы создаете переменную в одном шаблоне, но вам нужен доступ к ней из другого, вложенного шаблона. Методов достижения этой цели много, но далеко не все они изящны.
«В течение многих лет разработчикам тем, желающим передавать данные между шаблонами, приходилось использовать неидеальные обходные пути», – отметил Энрико в анонсе. Самые плохие решения связаны с использованием глобальной переменной. Также есть методы с созданием произвольных функций загрузки шаблонов поверх уже существующей системы WordPress. Проблема всех методов состоит в том, что отсутствует единый стандарт. В каждой теме применялось свое собственное решение, что порой дополнялось еще и плагинами, где могли быть реализованы и другие подходы.
Функции загрузки шаблонов в WordPress теперь поддерживают дополнительный параметр $args, который позволяет авторам тем передавать ассоциативный массив данных в загружаемый шаблон. Новый параметр поддерживают следующие функции:
- get_header()
- get_footer()
- get_sidebar()
- get_template_part()
- locate_template()
- load_template()
Все хуки, связанные с функциями, также передают данные.
Функция get_search_form() поддерживает аналогичный параметр с выхода WordPress 5.2. На практике все должно работать одинаково, но у этой функции есть также несколько значений по умолчанию.
Системе шаблонов WordPress все еще не хватает устойчивости, характерной для более современных фреймворков. Это небольшое улучшение станет приятным дополнением для разработчиков приложений.
Остается только один вопрос: не слишком ли поздно появился такой функционал? Если в WordPress в скором времени будет реализована система полного редактирования сайта, то этот функционал останется полезным только в течение нескольких следующих месяцев?
Разработчики до сих пор не имеют четкого представления о том, как будут выглядеть темы с блоками в ближайшие несколько лет. Возможно, ситуации с передачей динамических данных будут актуальны и в новой системе. Но даже если это не так, то пройдет много времени, прежде чем мы столкнемся с массовым внедрением и принятием блочных тем. А пока многие могут отказаться от произвольных решений в своих темах и перейти к стандартным функциям.
Источник: wptavern.com