Как укротить LightBox? add_action(‘wp_head’, ‘function’);

Имеем:

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 добаляем:

function wp_headLB() {
    do_action('wp_headLB');
}

2. В wp-content/plugins/lightbox/plugin.php меняем:

// add lightbox header to theme
    add_action('wp_head', 'lightbox_header');

на

// add lightbox header to theme
    add_action('wp_headLB', 'lightbox_header');

3. В шаблоне header.php после <?php wp_head(); ?> добаляем:

<?php if ( is_page('about')){ wp_headLB(); } ?>

Где 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 lightbox header to theme
    add_action('wp_head', 'lightbox_header');

на

// add lightbox header to theme
//    add_action('wp_head', 'lightbox_header');   <-- строка комментированию

Обратите внимание на то, что вся процедура замены сводится к комментированию строки add_action(‘wp_head’, ‘lightbox_header’);.

2. В файле header.php вставляем следующий код после <?php wp_head(); ?> добаляем:

<?php if ( is_page('about')){ ?>

<!-- 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 -->

<?php } ?>

Где about – это слаг той страницы на которой мы хотим видеть работу LightBox.

Мне тоже пригодилось — отключила хвост из скриптов плагина cform ||, тенкс 🙂

Anonymous
Отправить
Ответ на: