Kategoriler
WordPress

WordPress HTML Compression Minify [eklentisiz]

WordPress sitenizin görüntülenen sayfalarını daha düşük boyutta ve daha hızlı açılmasını sağlamak için herhangi bir eklenti kullanmadan bu fonksiyonu kullanabilirsiniz.

WordPress sitenizin HTML olarak görüntülenen sayfalarını herhangi bir eklenti kullanmadan sıkıştırmak ve daha hızlı ve daha az dosya boyutuyla yüklenmesini istiyorsanız bu paylaşacağım kodu sitenizde kullanabilirsiniz.

Kodu WordPress sitenizin function.php dosyasına ekleyerek kullanabilirsiniz.

WP_HTML_Compression

class WP_HTML_Compression{
    // Settings
    protected $compress_css = true;
    protected $compress_js = true;
    protected $info_comment = true;
    protected $remove_comments = true;
    // Variables
    protected $html;
public function __construct($html){
   	 if (!empty($html)){
   		 $this->parseHTML($html);
   	 }
}
public function __toString(){
   	 return $this->html;
}
protected function bottomComment($raw, $compressed){
   	 $raw = strlen($raw);
   	 $compressed = strlen($compressed);
   	 $savings = ($raw-$compressed) / $raw * 100;
   	 $savings = round($savings, 2);
   	 return '<!--HTML compressed, size saved '.$savings.'%. From '.$raw.' bytes, now '.$compressed.' bytes-->';
}
protected function minifyHTML($html){
   	 $pattern = '/<(?<script>script).*?<\/script\s*>|<(?<style>style).*?<\/style\s*>|<!(?<comment>--).*?-->|<(?<tag>[\/\w.:-]*)(?:".*?"|\'.*?\'|[^\'">]+)*>|(?<text>((<[^!\/\w.:-])?[^<]*)+)|/si';
   	 preg_match_all($pattern, $html, $matches, PREG_SET_ORDER);
   	 $overriding = false;
   	 $raw_tag = false;
   	 // Variable reused for output
   	 $html = '';
   	 foreach ($matches as $token){
   		 $tag = (isset($token['tag'])) ? strtolower($token['tag']) : null;
   		 $content = $token[0];
   		 if (is_null($tag)){
   			 if ( !empty($token['script']) ){
   				 $strip = $this->compress_js;
   			 }else if ( !empty($token['style']) ){
   				 $strip = $this->compress_css;
   			 }else if ($content == '<!--wp-html-compression no compression-->'){
   				 $overriding = !$overriding;
   				 // Don't print the comment
   				 continue;
   			 }else if ($this->remove_comments){
   				 if (!$overriding && $raw_tag != 'textarea'){
   					 // Remove any HTML comments, except MSIE conditional comments
   					 $content = preg_replace('/<!--(?!\s*(?:\[if [^\]]+]|<!|>))(?:(?!-->).)*-->/s', '', $content);
   				 }
   			 }
   		 }else{
   			 if ($tag == 'code' || $tag == 'pre' || $tag == 'textarea'){
   				 $raw_tag = $tag;
   			 }else if ($tag == '/code' || $tag == '/pre' || $tag == '/textarea'){
   				 $raw_tag = false;
   			 }else{
   				 if ($raw_tag || $overriding){
   					 $strip = false;
   				 }else{
   					 $strip = true;
   					 // Remove any empty attributes, except:
   					 // action, alt, content, src
   					 $content = preg_replace('/(\s+)(\w++(?<!\baction|\balt|\bcontent|\bsrc)="")/', '$1', $content);
   					 // Remove any space before the end of self-closing XHTML tags
   					 // JavaScript excluded
   					 $content = str_replace(' />', '/>', $content);
   				 }
   			 }
   		 }
   		 if ($strip){
   			 $content = $this->removeWhiteSpace($content);
   		 }
   		 $html .= $content;
   	 }
   	 return $html;
}
	
public function parseHTML($html){
   	 $this->html = $this->minifyHTML($html);
if ($this->info_comment){  $this->html .= "\n" . $this->bottomComment($html, $this->html); }
}

protected function removeWhiteSpace($str){
   	 $str = str_replace("\t", ' ', $str);
   	 $str = str_replace("\n",  '', $str);
   	 $str = str_replace("\r",  '', $str);
while (stristr($str, '  ')){ $str = str_replace('  ', ' ', $str); }
   	 return $str;
}
/* class WP_HTML_Compression */
}


function wp_html_compression_finish($html){
    return new WP_HTML_Compression($html);
}

function wp_html_compression_start(){
    ob_start('wp_html_compression_finish');
}
add_action('get_header', 'wp_html_compression_start');

Eğer bu iş için bir eklenti kullanayım diyorsanız sunucunuz destekliyorsa öncelikli olarak LiteSpeed Cache tavsiye ederim, ayarlarını iyi yaptığınız taktirde en iyisidir. WP Super Cache de iyidir ancak içerisinde HTML compress gibi bir özellik yoktur.

Daha fazla WordPress ipuçları için beni Twitter’da takip edebilirsiniz, kolay gelsin.

WOLKANCA

Volkan Yılmaz

Digital Marketing & WordPress & SEO volkan@volkanyilmaz.com.tr