纯代码实现wordpress html代码压缩

为了优化wordpress网站的访问速度,压缩网页是一种非常不错的方法。

虽然压缩wordpress页面后查看源代码不是很友好,而且可以说看起来很怪。但是压缩页面的好处是减小了页面的大小。在访问速度上,更快。

这些虽然肉眼看不见,但是这样做真的很不错。另一方面,给扒页面的人带来点麻烦,他们不得不重新整理页面代码!

不想安装插件的同学可以试试下面的代码!压缩效果可以在本站看到。

直接把下面的代码加到functions.php就可以了:

/**
* WordPress 前端 html 网页代码压缩优化(插件版和代码版)
* https://www.ilxtx.com/wordpress-html-compression.html
*/
function wp_compress_html(){
    function wp_compress_html_main ($buffer){
        $initial=strlen($buffer);
        $buffer=explode("<!--wp-compress-html-->", $buffer);
        $count=count ($buffer);
        for ($i = 0; $i <= $count; $i++){
            if (stristr($buffer[$i], '<!--wp-compress-html no compression-->')) {
                $buffer[$i]=(str_replace("<!--wp-compress-html no compression-->", " ", $buffer[$i]));
            } else {
                $buffer[$i]=(str_replace("\t", " ", $buffer[$i]));
                $buffer[$i]=(str_replace("\n\n", "\n", $buffer[$i]));
                $buffer[$i]=(str_replace("\n", "", $buffer[$i]));
                $buffer[$i]=(str_replace("\r", "", $buffer[$i]));
                while (stristr($buffer[$i], '  ')) {
                    $buffer[$i]=(str_replace("  ", " ", $buffer[$i]));
                }
            }
            $buffer_out.=$buffer[$i];
        }
        $final=strlen($buffer_out);   
        $savings=($initial-$final)/$initial*100;   
        $savings=round($savings, 2);   
        $buffer_out.="\n<!--压缩前的大小: $initial bytes; 压缩后的大小: $final bytes; 节约:$savings% -->";   
    return $buffer_out;
}
ob_start("wp_compress_html_main");
}
add_action('get_header', 'wp_compress_html');

当然,和插件一样,代码版也可以通过添加如下注释来排除不想被压缩的地方:

<!--wp-compress-html--><!--wp-compress-html no compression-->
此处代码不会被压缩,主要是避免压缩带来的错误,比如 JS 错误
<!--wp-compress-html no compression--><!--wp-compress-html-->

比如,如果你跟我一样使用了 Crayon Syntax Highlighter 高亮插件,为了防止“代码切换到纯文本模式时,代码全挤在一团”,可在 function.php 中加入以下代码:

/* Crayon Syntax Highlighter 高亮插件不启用压缩 */
function unCompress($content) {
if(preg_match_all('/(crayon-|<\/pre>)/i', $content, $matches)) {
$content = '<!--wp-compress-html--><!--wp-compress-html no compression-->'.$content;
$content.= '<!--wp-compress-html no compression--><!--wp-compress-html-->';
}
return $content;
}
add_filter( "the_content", "unCompress");