Minify HTML Output Pada WordPress tanpa Plugin

Hadie Danker
Minify HTML Output Pada WordPress tanpa Plugin Icon

Halo,  nyari nyari fungsi biar output HTML pada WordPress di browser cuma jadi 1 Line alias di minify tanpa plugin, akhirnya nemu code ini.

 

function sanitize_output($buffer) {

    $search = array(
        '/\>[^\S ]+/s',  // strip whitespaces after tags, except space
        '/[^\S ]+\</s',  // strip whitespaces before tags, except space
        '/(\s)+/s'       // shorten multiple whitespace sequences
    );

    $replace = array(
        '>',
        '<',
        '\\1'
    );

    $buffer = preg_replace($search, $replace, $buffer);

    return $buffer;
}

ob_start("sanitize_output");

cukup tambahkan kode ini di file functions.php dan jadi deh minify html di browser.

Oh ia, tambahkan kode ini di footer:

 

<?php
ob_end_flush();
?>

 

Note:

Saran saya untuk membackup theme anda terlebih dahulu. Jika ada PHP atau Javascript (inline) yang kemudian tidak bekerja, coba cari comment seperti ini:

// comment

 

/*comment*/

Hapus saja jika anda melihat code itu di file Javascript yang tidak bekerja.

Source Code stackoverflow

 
Update, ini nemu juga code yang mungkin agak panjang dan cukup lumayan bagus. langsung saja copy code nya dan paste di functions.php

asdadasdasd
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 udah dikompress, lumayan tuh berkurang '.$savings.'%. Tadinya '.$raw.' bytes, sekarang cuma '.$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 == 'pre' || $tag == 'textarea')
 {
 $raw_tag = $tag;
 }
 else if ($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;
 }
}

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');