Как известно в WP есть одна неприятная штука – если вы установили плагин и он выводит свои файлы стилей и скрипты, то они будут выводиться на всех ваших страницах независимо от того на какой странице вы его используете. И таким образом представьте себе если у вас установлено куча разных плагинов типа слайдшоу, галерей, контактных форм и тд, то сколько лишнего мусора будет на грузиться на каждой странице и это безусловно будет ударять по скорости загрузки вашего сайта и снижать ваши рейтинги в поисковой выдачи.
Какие есть методы которые позволят контролировать вывод скриптов и стилей от плагинов?
В CMS WordPress есть несколько способов контроля вывода скриптов и стилей, добавленных плагинами:
- Использование функции wp_enqueue_script() и wp_enqueue_style() – эти функции позволяют добавлять скрипты и стили в заголовок или подвал страницы и определять, когда они будут загружены. Вы можете использовать их, чтобы загружать скрипты и стили только на тех страницах, где они действительно необходимы, или чтобы избежать конфликтов между плагинами.
- Использование плагинов для управления скриптами и стилями – существуют плагины, которые позволяют управлять скриптами и стилями, добавленными другими плагинами. Например, плагин WP Asset Clean Up позволяет отключать скрипты и стили, которые не используются на странице, или сокращать их.
- Ручное редактирование файла functions.php – вы можете редактировать файл functions.php своей темы, чтобы добавлять или удалять скрипты и стили, которые добавляются плагинами. Но не рекомендуется редактировать файлы ядра WordPress.
- Использование плагина Code Snippets – плагин Code Snippets позволяет добавлять фрагменты PHP-кода без необходимости редактирования файлов. Вы можете использовать его, чтобы отключать или изменять скрипты и стили, добавленные плагинами.
Здесь я бы хотел немного поделиться 3-им способом ручного редактирования файла functions.php, вот пример на одном из моих сайтов:
function rjs_lwp_contactform_css_js()
{
// 1) CF7 только на страницах где используется
global $post;
if (is_a($post, 'WP_Post') && has_shortcode($post->post_content, 'contact-form-7')) {
wp_enqueue_script('contact-form-7');
wp_enqueue_style('contact-form-7');
} else {
wp_dequeue_script('contact-form-7');
wp_dequeue_style('contact-form-7');
}
// 2) убираем скрипты с конкретных страниц
if ( is_page( array( 'home', 2, 'about' ) ) ) {
wp_dequeue_script('dnd-upload-cf7');
wp_dequeue_style('dnd-upload-cf7');
wp_dequeue_style('cf7cf');
wp_dequeue_script('wpcf7cf');
wp_dequeue_script('google-recaptcha');
add_filter( 'wpcf7_load_js', '__return_false' );
add_filter( 'wpcf7_load_css', '__return_false' );
add_filter( 'wpcf7cf_load_js', '__return_false' );
add_filter( 'wpcf7cf_load_css', '__return_false' );
remove_action( 'wp_enqueue_scripts', 'wpcf7_recaptcha_enqueue_scripts', 20 );
} else {
// 3) убираем со всех кроме указанных
wp_dequeue_script('jquery.crellyslider.min');
wp_dequeue_style('crellyslider.min');
}
}
add_action('wp_enqueue_scripts', 'rjs_lwp_contactform_css_js');
Code language: PHP (php)
- В первом случае с помощью метода has_shortcode() проверяем встречается ли в тексте страницы указанный шорткод, если есть то отключаем. Такой вариант может изрядно нагружать сервер
- Во втором случае мы задали условие в котором говорим на каких страницах не нужно выводить скрипты и стили, и тут как видите если просто wp_dequeue не работает то нужно найти как в самом плагине подключается скрипт и с помощью фильтра отключить его
- Третий вариант – условие наоборот, убираем со всех кроме указанных страниц
Важно отметить, что при контроле вывода скриптов и стилей от плагинов необходимо быть осторожным, чтобы не повредить функциональность плагинов или сайта в целом.