Динамическое минифицирование css без плагинов

Оптимизируя быстродействие своих блогов заметил в одном из шаблонов php-файлик который минифицирует  css - убирает все лишние символы: пробелы, табуляцию и тд. и тп. За счет этого css-файлы становятся меньше по объему. Решил этот php-файл скопировать в другие шаблоны - все работает. Делюсь этим файликом.

Итак сам php-файл:

<?php
header( "Content-type: text/css" );

$files = array();
$files[] = 'style.css';
$files[] = 'https://elims.org.ua/wp-content/themes/Technologic/Technologic/menu/MenuMatic.css';
$files[] = 'https://elims.org.ua/wp-content/plugins/wp-pagenavi/pagenavi-css.css?ver=2.70';

foreach($files as $file) :
  $content = @file_get_contents( $file );
  echo minify( $content );
endforeach;

function minify( $code ) {
  $code = preg_replace( '#\s+#', ' ', $code );
  $code = preg_replace( '#/\*.*?\*/#s', '', $code );
  $code = str_replace( '; ', ';', $code );
  $code = str_replace( ': ', ':', $code );
  $code = str_replace( ' {', '{', $code );
  $code = str_replace( '{ ', '{', $code );
  $code = str_replace( ', ', ',', $code );
  $code = str_replace( '} ', '}', $code );
  $code = str_replace( ';}', '}', $code ); 
  return trim( $code );
}
?>

Копируем этот текст в блокнот и сохраняем его, например, в файл под именем style.php. Style.php скопируйте в папку с шаблоном - этот файл теперь буден виден в wordpress-редакторе шаблона. Благодаря чему его можно будет легко изменять.

Прошу обратить внимание на строки:

$files[] = 'style.css';
$files[] = 'https://elims.org.ua/wp-content/themes/Technologic/Technologic/menu/MenuMatic.css';
$files[] = 'https://elims.org.ua/wp-content/plugins/wp-pagenavi/pagenavi-css.css?ver=2.70';

В этих строках перечислены мои css-файлы, которые я минифицирую. У вас они должны быть свои, смотрите какие css-файлы вы можете отключить в плагинах или убрать из кода шаблона. В плагинах и шаблоне css убираете и вставляете адреса этих файлов в style.php, как в моем примере.

Осталось только в шаблоне заменить строку, которая указывала на стандартный style.css, строкой которая будет указывать на style.php.

В своем шаблоне, в файле header.php я заменил строку

<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />

На

<link rel="stylesheet" href="https://elims.org.ua/wp-content/themes/Technologic/Technologic/style.php" type="text/css" media="screen" />

При минификации файлов можно пойти и другим путем - открыть файл, минифицировать его содержимое и сохранить. Но тут есть нюанс - если это файл плагина, то при обновлении плагина этот файл также может обновиться, а если это файл шаблона - то потом будет крайне неудобно редактировать этот плохо-читаемый код.  Потому я выбрал вышеописанный метод. Еще один плюс этого метода, что вместо нескольких мелких файлов подгружается один файл, что также хорошо сказывается на скорости загрузки.

Понравилось? =) Поделись с друзьями:

Обсудить