Начнём с того, для чего это, собственно, нужно. Об этом я уже писал в этой статье в пунктах Combine external JavaScript и Combine external CSS, так что повторяться смысла не вижу.
Совершенно очевидно, что для того, чтобы объединить файлы CSS или JavaScript можно просто залезть в код плагинов и вырезать код их подключения. Но тогда при первом же обновлении плагинов всё придется повторить заново. А если таких плагинов у нас установлено несколько, то все эти процедуры могут очень быстро надоесть.
К счастью wordpress – движок очень гибкий и позволяет обойти эту проблему стороной. Если плагин для подключения файлов использует функции wp_enqueue_script() и wp_enqueue_style(), то отключить их можно без редактирования кода этих плагинов.
Чтобы привести пример, отключим JavaScript у Contact Form 7 и файл CSS у плагина WP-PageNavi.
Отключаем JavaScript.
Для этого нам нужно узнать идентификатор скрипта. Открываем файл wp-contact-form-7.php и ищем в нем строку wp_enqueue_script. В результате находим вот такой код:
wp_enqueue_script( 'contact-form-7', wpcf7_plugin_url( 'contact-form-7.js' ), array('jquery', 'jquery-form'), WPCF7_VERSION, $in_footer );
В данном случае идентификатор – contact-form-7. Запоминаем его, а файл плагина закрываем, его мы трогать не будем.
Теперь открываем файл functions.php нашей темы и добавляем в неё следующий код:
add_action( 'wp_print_scripts', 'my_deregister_javascript', 100 );
function my_deregister_javascript() {
wp_deregister_script( 'contact-form-7' );
}
Готово! Теперь скрипт подгружаться не будет.
Отключаем CSS.
Узнаем идентификатор: открываем файл wp-pagenavi.php и ищем функцию wp_enqueue_style. В итоге находим вот такую строку:
wp_enqueue_style('wp-pagenavi', get_stylesheet_directory_uri().'/pagenavi-css.css', false, '2.50', 'all');
Как вы уже догадались, нужный нам идентификатор – wp-pagenavi.
Теперь добавляем в functions.php следующий код:
add_action( 'wp_print_styles', 'my_deregister_styles', 100 );
function my_deregister_styles() {
wp_deregister_style( 'wp-pagenavi' );
}
Отныне CSS файл плагина не подключается.
Думаю алгоритм понятен. Не забудьте скопировать стили CSS из файла плагина в файл style.css своей темы. В случае со скриптами, нужно создать новый файл, например scripts.js, залить его в папку с темой и подключить его, добавив в файле header.php перед тэгом </head> вот такую строку:
<script src="<?php echo( bloginfo( 'template_directory' ) . '/script.js' ); ?>" type="text/javascript"></script>
Не забывайте, что JavaScript и Jquery нельзя помещать в один файл.
Чтобы объединить все скрипты и файлы CSS, можно открыть исходный код главной страницы вашего блога и посмотреть, какие файлы подключаются. Затем провести описанные выше процедуры с каждым из них.
Удобство этого метода заключается в том, что теперь после каждого обновления плагинов нам не нужно будет повторять все эти действия заново.
Эту статью можно считать дополнением к Как я уменьшил время загрузки своего блога в 4 раза. Часть 2.




Меня зовут Ян Такушевич и я рад приветствовать Вас на моём блоге. Мне 21 год, живу я в городе Минске. Чтобы связаться со мной, посетите страницу
Подписка по RSS
E-mail подписка
Я в twitter


Комментарии:
Ян, спасибо за полезную информацию.
Пара советов:
а) думаю, стоит написать в начале статьи – какой вообще смысл в этих действиях. В противном случае большинство не-программистов в принципе не поймут суть.
б) стоит упомянуть тот факт, что при обновлении плагина все вернется на свои места и операцию нужно будет повторить заново.
Ответить
Ян Такушевич отвечает:
22.01.2010 в 14:35
На счёт пункта а) Вы наверное правы, сейчас внесу изменения в статью.
А вот на счет пункта б) – прочитайте статью еще раз, только внимательно, и поймёте, что Вы ошибаетесь
Ответить
Yaroslav.CH отвечает:
22.01.2010 в 15:08
Перечитал. Сорри, мое упущение – я неверно выразился. Я имел ввиду не момент повторного проведения операции отключения, а момент повторного копирования стилей и скриптов из плагина. При обновлении версии, содержимое собственных файлов CSS и JS плагина может измениться, ввиду чего использование старых стилей и кода может привести к неработоспособности самого плагина.
Мы же отключаем вывод собственных скриптов и стилей плагина, но не обеспечиваем автоматические копирование новых строк поверх старых.
Ответить
Теперь согласен, но всё равно не на 100%
Дело в том, что CSS стили плагинов меняются редко, потому что, как правило, их авторы в новых версиях исправляют какие-либо баги, делают небольшие дополнения, но внешний вид меняется очень редко.
НА счёт JS – обновляется он чаще, но это можно легко вычислить – после обновления плагина достаточно просто проверить его работоспособность и если что-то не так – заново скопировать код. Но это, опять же, вряд ли понадобится делать каждый раз.
Ответить
Yaroslav.CH отвечает:
22.01.2010 в 16:11
В отношении CSS – рассматриваемый плагин может быть и плагином меню, к которому CSSы меняют довольно часто.
Не все плагины можно проверить так легко – только что Вы сами столкнулись с неработоспособностью антиспам-плагина комментариев, которую “не проверишь – не найдешь”
Собственно, все это я к тому, что совет действительно полезный, но стоило бы просто немного расширить статью, предупредив читателей о том, что в случае ошибки, проблему стоит начать искать именно в этой области.
Ответить
Ян Такушевич отвечает:
22.01.2010 в 18:54
Вы это уже сделали, спасибо!
Ответить
Спасибо Вам за хорошую статью, уже смотрю как применить на практике
Ответить