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

Как подключать скрипт только если в тексте есть определенный шорткод | n-wp.ru
Загружаем скрипты только тогда, когда они действительно нужны. В данном примере скрипт загружается только если в содержимом поста есть определенный шорткод.
👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

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

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

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

function shortcode_checker()
{
  global $post;
  if( has_shortcode( $post->post_content, 'your-shortcode') )
  {
    wp_enqueue_script( '.../script.js');
  }
}
add_action( 'wp_enqueue_scripts', 'shortcode_checker');

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

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

Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

Оцените автора
Добавить комментарий

  1. kovshenin

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

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

    Ответить
    1. Сергей

      А можно пример, как вызвать wp_enqueue_script() прямо в обработчике шорткода?

      Ответить