n-wp.ru — блог о WordPress
Как подключать скрипт только если в тексте есть определенный шорткод | n-wp.ru

Как подключать скрипт только если в тексте есть определенный шорткод

Загружаем скрипты только тогда, когда они действительно нужны. В данном примере скрипт загружается только если в содержимом поста есть определенный шорткод.

Как подключать скрипт только если в тексте есть определенный шорткод

Одним из «узких» мест при загрузке страницы является подключение java-скриптов. Сейчас практически ни один серьезный проект не обходится без их использования — все эти модные слайдеры, всплывающие окна, выпадающие меню, выезжающие панели, плавно исчезающие и меняющие цвет формы, — все это использует скрипты, иногда достаточно тяжеловесные. И при загрузке казалось бы вполне безобидной, простой страницы, вместе с ней загружаются, а иногда и тут же выполняются java-скрипты. Все это требует времени, что в конечном итоге отражается на скорости загрузки и отображения страниц. Если же java-скрипты не поспевают за общим ходом загрузки, то это приводит к визуально неприятным последствиям, которые выражаются в постоянном дерганье элементов на ней, появлении пустых пространств. Что можно предпринять в таком случае? Есть одна хитрость, к которой я иногда прибегаю, если проект позволяет это реализовать. В чем ее суть?

Многие формы, поля, меню, слайдеры, которые за собой тянут целый воз java-скриптов, вставляются авторами постов с помощью шорткодов. Чтобы java-скрипты, обеспечивающие всю эту красоту, не загружались всегда и на всех страницах, можно создать специальное условие: если в тексте поста есть шорткод, вызывающий функционал, для обеспечения работы которого подгружаются java-скрипты, то эти скрипты загружаются, а если шорткода нет, то скрипты не грузятся. Выглядит это условие примерно так:

your-shortcode — это шорткод, наличие которого в посте нужно проверить
…/script.js — это путь к подключаемому java-скрипту

Таким образом можно сократить количество постоянно загружаемых скриптов — пусть загружаются только тогда, когда они нужны. Исключение загрузки лишних скриптов благотворно скажется на времени загрузки страниц блога.

tiaurus

Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

1 комментарий

  • Не самый оптимальный вариант, поскольку has_shortcode() повторно исполнит огромное регулярное выражение из shortcodes.php, а глобальная перменная $post будет иметь лишь первую запись, даже если на странице их отображено 10, например на главной или в архивах, тогда ваш скрипт так и не подключится.

    Наиболее оптимальным вариантом будет вызов wp_enqueue_script() прямо в обработчике шорткода, тогда скрипт будет подключен в футере.

/* ]]> */