К сожалению, иногда бывает так, что есть…
К сожалению, иногда бывает так, что есть хорошие и удобные инструменты, но по каким-то причинам ими пользуются далеко не все и не всегда. В результате возникают проблемы, казалось бы, на ровном месте. Один из таких примеров – подключение JavaScript кода в WordPress. Этот движок предоставляет удобную функцию wp_enqueue_script. С её помощью можно обеспечить необходимый порядок подключения скриптов и, при этом, гарантируется, что один и тот же скрипт будет подключён только один раз. Кстати, аналогичные возможности есть и в различных фреймворках, например, Yii. Но разница между фреймворком и WordPress в том, что с помощью последнего можно создать сайт, не читая документацию, во всяком случае, ту часть, которая касается API. В этом нет ничего плохого, но можно столкнуться с некоторыми нюансами. О них речь пойдет ниже.
Основные проблемы и причины их появления
Возьмем самую распространённую ситуацию. Есть сайт на WP, и есть готовый JS скрипт, который нужно к этому сайту подключить. Что написано в инструкции по установке скрипта? «Вставьте тег в заголовок страницы (между и )». Тут все правильно. Разработчик пишет инструкцию на общий случай, а не конкретно под WP. Следующий вопрос. Где находятся теги и в WP? Обычно в файле header. php текущей темы. Т. е. если делать строго по инструкции, то нужно добавить теги в header. php. Именно здесь и возникают проблемы. Точнее, если ваш JS скрипт не зависит ни от каких библиотек, и не используется никакими плагинами, то всё будет в порядке, но в противном случае ситуация сложнее.
Проблема 1. Многократная загрузка JS файлов.
Возникает если подключить JS скрипт в файле темы, а затем использовать плагин, которому нужен этот же скрипт. Чаще всего такое происходит с JavaScript библиотеками. Разработчики плагинов доступа к файлам вашей темы не имеют, но должны гарантировать подключение необходимых скриптов. Поэтому для них единственным вариантом будет использование wp_enqueue_script. В результате один раз JavaScript файл подключается вашим тегом, второй – тегом, который добавит плагин. Это приводит к увеличению веса страницы, времени её загрузки, росту трафика сервера.
Проблема 2. «Неработающие» плагины.
Вытекает из первой. Рассмотрим небольшой пример. Допустим скрипты подключены в header. php следующим образом.