Контроль над выводом скриптов и стилей в WordPress

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

Какие есть методы которые позволят контролировать вывод скриптов и стилей от плагинов?

В CMS WordPress есть несколько способов контроля вывода скриптов и стилей, добавленных плагинами:

  1. Использование функции wp_enqueue_script() и wp_enqueue_style() – эти функции позволяют добавлять скрипты и стили в заголовок или подвал страницы и определять, когда они будут загружены. Вы можете использовать их, чтобы загружать скрипты и стили только на тех страницах, где они действительно необходимы, или чтобы избежать конфликтов между плагинами.
  2. Использование плагинов для управления скриптами и стилями – существуют плагины, которые позволяют управлять скриптами и стилями, добавленными другими плагинами. Например, плагин WP Asset Clean Up позволяет отключать скрипты и стили, которые не используются на странице, или сокращать их.
  3. Ручное редактирование файла functions.php – вы можете редактировать файл functions.php своей темы, чтобы добавлять или удалять скрипты и стили, которые добавляются плагинами. Но не рекомендуется редактировать файлы ядра WordPress.
  4. Использование плагина 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 не работает то нужно найти как в самом плагине подключается скрипт и с помощью фильтра отключить его
  • Третий вариант – условие наоборот, убираем со всех кроме указанных страниц

Важно отметить, что при контроле вывода скриптов и стилей от плагинов необходимо быть осторожным, чтобы не повредить функциональность плагинов или сайта в целом.

Like this post? Please share to your friends:
Leave a Reply

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: