Jacky's Blog Jacky's Blog
  • 首页
  • 关于
  • 项目
  • 大事记
  • 留言板
  • 友情链接
  • 分类
    • 干货
    • 随笔
    • 项目
    • 公告
    • 纪念
    • 尝鲜
    • 算法
    • 深度学习
  • 1
  • 0

WordPress 页面压缩函数

Jacky
19 1 月, 2017

今天分享一个彩蛋,用于压缩 WordPress 页面的函数,代码已经 Review 并优化了,详情看函数下方。

function wp_compress_html(){
function wp_compress_html_main ($buffer){
$initial=strlen($buffer);
$buffer=explode("", $buffer);
$count=count ($buffer);
for ($i = 0; $i <= $count; $i++){ if (stristr($buffer[$i], '')) {
$buffer[$i]=(str_replace("", " ", $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";
return $buffer_out;
}
ob_start("wp_compress_html_main");
}
add_action('get_header', 'wp_compress_html');
function ignoreCompress($content) {
$matches = array();
$c = "/(crayon-|<\/pre>)/i";
if(preg_match_all($c, $content, $matches) && is_single()) {
$content = ''.$content;
$content.= '';
}
return $content;
}
add_filter( "the_content", "ignoreCompress");

一些说明

我用的主题里内置了 wp_compress_html() 的函数,但存放在一个独立的文件中,没有被引用。

今天,尝试手动引用它,效果确实不错,将 HTML 文档全部压缩为了一行,但美中不足的是它会使 pre 标签下的代码压成一行,不便于阅读,于是我上网查阅了相关内容,将这段代码优化了一下。

主要的优化有两个,第一个是 add_action('init', 'wp_compress_html'); 原版的 init 位置写的是 get_header,这里改成 init 增加了压缩的范围,并在 ob_start(“wp_compress_html_main”); 外加上判断,防止管理页面被压缩(之所以不压缩的原因是怕编辑器出现奇葩问题);为了防止某些需要调用ajax的插件、主题出错,撤销修改。
第二个优化是添加了 ignoreCompress() 函数,用于防止 pre 标签下的代码被压缩。

经过了两个小时的测试,一切正常~

文章最后修订于 2019年3月31日

1
本文系作者 @Jacky 原创发布在 Jacky's Blog。未经许可,禁止转载。
短代码测试
上一篇
Hello Python and Django
下一篇

评论 (0)

再想想
暂无评论

近期评论

  • Jacky 发表在《留言板》
  • 菜鸟 发表在《留言板》
  • merlin 发表在《留言板》
  • orz 发表在《Xcode 中使用 Clang-format》
  • Jacky 发表在《关于》
1
Copyright © 2016-2025 Jacky's Blog. Designed by nicetheme.
粤ICP备16016168号-1
  • 首页
  • 关于
  • 项目
  • 大事记
  • 留言板
  • 友情链接
  • 分类
    • 干货
    • 随笔
    • 项目
    • 公告
    • 纪念
    • 尝鲜
    • 算法
    • 深度学习

搜索

  • Mac
  • Apple
  • OS X
  • iOS
  • macOS
  • Linux
  • 阿里云
  • WordPress
  • 运维
  • macOS Sierra

Jacky

Go Python C C++ | 弱冠之年 | 物联网工程
183
文章
192
评论
267
喜欢