Имеем:
1. Плагин (например Lightbox)
В плагине есть строка: add_action(‘wp_head’, ‘lightbox_header’);
Которая вствляет нам в header для всех страниц в область <?php wp_head(); ?> заданный в функции lightbox_header() текст:
<!-- Lightbox Plugin 0.7/2.03.3 -->
<link rel="stylesheet" href="http://www.tls.by/wp-content/plugins/lightbox/css/lightbox.css" type="text/css" media="screen" />
<script type="text/javascript"><!--
var fileLoadingImage = 'http://www.tls.by/wp-content/plugins/lightbox/images/loading.gif';
var fileBottomNavCloseImage = 'http://www.tls.by/wp-content/plugins/lightbox/images/close.gif';
var resizeSpeed = 7;
var borderSize = 10;
var animate = true;
var overlayOpacity = 0.8;
//--></script>
<script type="text/javascript" src="http://www.tls.by/wp-content/plugins/lightbox/js/prototype.js"></script>
<script type="text/javascript" src="http://www.tls.by/wp-content/plugins/lightbox/js/effects.js"></script>
<script type="text/javascript" src="http://www.tls.by/wp-content/plugins/lightbox/js/lightbox.js"></script>
<!-- /Lightbox Plugin -->
При этом каждая страница, даже если ей не нужны эффекты LightBox, подгружает 1 дополнительный CSS + как минимум 2 картинки + 3 JS файла.
А это и ненужный трафик и лишние http запросы и скорость загрузки страниц.
Задача:
Заставить плагин LightBox вставлять вышеуказанный код только на определенную страницу.
Кто-нибудь знает способ?
Что произойдет если в header.php добавить следующее:
<?php if (is_page(‘about’)){ wp_head_forLB(); }?>
а в плагине изменить строку add_action(‘wp_head’, ‘lightbox_header’); на add_action(‘wp_head_forLB‘, ‘lightbox_header’);
Будет ли работать?
Может есть и другой способ?
Проблему удалось решить.
А именно, благодаря этому мануалу удалось создать новый триггер и взаставить LightBox вставлять JS именно в него.
Пошагово:
1. В wp-includes/general-template.php добаляем:
2. В wp-content/plugins/lightbox/plugin.php меняем:
на
3. В шаблоне header.php после <?php wp_head(); ?> добаляем:
Где about – это слаг той страницы на которой мы хотим видеть работу LightBox
Теперь JS код плагина будет вставляться именно в триггер wp_headLB и именно на той странице, на которой мы хотим.
В результате проделанных действий удалось предотвратить загрузку не нужных 70.8 Kb (Ungzip).
Пользуйтесь на здоровье.
Единственное что смущает – это добавление новой функции в wp-includes/general-template.php.
Если кто знает способ лучше – отпишитесь.
Способ №2
При использовании этого метода не требуется редактирование wp-includes/general-template.php
1. В wp-content/plugins/lightbox/plugin.php меняем:
на
Обратите внимание на то, что вся процедура замены сводится к комментированию строки add_action(‘wp_head’, ‘lightbox_header’);.
2. В файле header.php вставляем следующий код после <?php wp_head(); ?> добаляем:
Где about – это слаг той страницы на которой мы хотим видеть работу LightBox.
Мне тоже пригодилось — отключила хвост из скриптов плагина cform ||, тенкс 🙂