Nén code WordPress không cần plugin
Hiện nay có rất nhiều plugin tối ưu cho website nên có tích hợp sẵn chức năng nén html, css, js cho website của bạn nhưng nếu bạn không muốn dùng plugin thì có thể sử dụng code dưới đây để nén code đầu ra HTML của WordPress nhé.
Có thể nhiều người sẽ thắc mắc nếu dùng plugin nén rồi thì có cần code này để nén nữa hay không, mình xin trả lời là có, code này cho vào file functions.php nên chúng sẽ được nén trước, qua lớp plugin tối ưu hay plugin cache họ nén nữa hay không thì tuỳ nhưng cái gốc đã nén thì quá tốt.
Để nén code html trong WordPress bạn có thể sử dụng đoạn code phía dưới đây cho vào file
Sau đó bạn có thể view-source sẽ thấy code được nén lại còn 1 dòng như này thôi.
functions.php
và lưu lại là xong.
File functions.php trong WordPress nằm ở đâu và có chức năng gì bạn có thể xem tại đây
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
class FLHM_HTML_Compression { protected $flhm_compress_css = true; protected $flhm_compress_js = true; protected $flhm_info_comment = true; protected $flhm_remove_comments = true; protected $html; public function __construct($html) { if (!empty($html)) { $this->flhm_parseHTML($html); } } public function __toString() { return $this->html; } protected function flhm_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 flhm_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; $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->flhm_compress_js; } else if ( !empty($token['style']) ) { $strip = $this->flhm_compress_css; } else if ($content == '<!--wp-html-compression no compression-->') { $overriding = !$overriding; continue; } else if ($this->flhm_remove_comments) { if (!$overriding && $raw_tag != 'textarea') { $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; $content = preg_replace('/(\s+)(\w++(?<!\baction|\balt|\bcontent|\bsrc)="")/', '$1', $content); $content = str_replace(' />', '/>', $content); } } } if ($strip) { $content = $this->flhm_removeWhiteSpace($content); } $html .= $content; } return $html; } public function flhm_parseHTML($html) { $this->html = $this->flhm_minifyHTML($html); if ($this->flhm_info_comment) { $this->html .= "\n" . $this->flhm_bottomComment($html, $this->html); } } protected function flhm_removeWhiteSpace($str) { $str = str_replace("\t", ' ', $str); $str = str_replace("\n", '', $str); $str = str_replace("\r", '', $str); $str = str_replace("// The customizer requires postMessage and CORS (if the site is cross domain).",'',$str); while (stristr($str, ' ')) { $str = str_replace(' ', ' ', $str); } return $str; } } function flhm_wp_html_compression_finish($html) { return new FLHM_HTML_Compression($html); } function flhm_wp_html_compression_start() { ob_start('flhm_wp_html_compression_finish'); } add_action('get_header', 'flhm_wp_html_compression_start'); |