[摘要]

wp-html-compression是WordPress常用的压缩前端代码插件,本文简析纯代码实现WordPress前端代码压缩功能,并指出常见bug的解决方法。

除了主机的因素之外,一个网站的加载速度还跟前端代码压缩程度有关,如果对前端html做压缩优化,可以在一定程度上减小页面大小,提高加载速度。而在WordPress主题中应用最广的应该就是wp-html-compression这个插件或者代码版了。

其原理是删除前端html中空格和制表符等不必须的内容,从而简化代码,你甚至不需要设置什么,只要一段代码就能给WordPress加速。

绝大多数的优质主题都会集成这个代码,今天单独拿出来说,一方面是想帮助没有集成此功能的主题用;另外一方面是想将一些常见好用的WordPress代码单独列出来,也算是稍作研究,会吃鱼也会钓鱼,以便单独写主题模板时按需定制功能。

压缩WordPress前端html代码版

/*WordPress前端代码压缩*/

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

使用方法很简单,只需要将上述代码置入WordPress主题目录的function.php中,即最后一个?>之前即可。

但笔者个人比较习惯将代码量较大的功能单独出来,做一个文件,然后在function.php中引入,如将上述代码新建一个wp-html-compression.php文件,放在主题include文件夹中,在function.php引入

include (TEMPLATEPATH . '/includes/wp-html-compression.php');

这样做的好处就是可以更高效的维护代码,同时也可以在主题后台很轻松的定制要不要启用前台代码压缩功能,当然多了一次引入会在效率上有一点点影响,不过function.php里面的代码就清爽了很多了,这个仁者见仁,看各位的习惯了。

前端代码压缩出现的bug

1、部分代码避免被压缩方法

此功能既然是压缩前端的代码,自然而然会将一些JS代码给压缩了,事实上有些JS被压缩后会失效,所以我们需要将这部分内容绕过压缩。只需要将你想绕过压缩的代码加个包裹层即可,代码如下

这里的代码将会被保护起来,避免了压缩产生的异常情况

注意:目前网上流传的绕过压缩的代码如下,使用者请自查。

错误的免压缩代码,部分主题使用

其实很多时候JS被压缩出错是因为JS中出现了//注释,试想下后面的空格被删除了,所有的代码将出现在//后面,相当于代码都被注释了,肯定会出错啊。最简单的解决办法就是删除注释或者使用闭合注释/*这里是注释*/,这样就可以避免后面的内容被注释掉了。

2、避免文章中高亮的代码被压缩

很多博文中会分享代码,当你使用代码高亮插件的时候再压缩前端代码,就会出现高亮失效的情况,如图:

启用代码压缩前

启用代码压缩后

原因很简答,代码高亮是将代码格式化,以优美的方式展示给读者;而压缩是直接将样式等修饰内容粗暴的删除,这样肯定会导致高亮失效的,只需要在function.php添加另外一段代码,就可以避免代码高亮被压缩了。

//避免含有代码高亮的文章内容被压缩

function Code_Box($content) {

$matches = array();

//下面是查找代码高亮的关键词

$c = "/(crayon-|)/i";

if(preg_match_all($c, $content, $matches) && is_single()) {

$content = ''.$content;

$content.= '';

}

return $content;

}

add_filter( "the_content", "Code_Box" );

这段代码可以避免使用Crayon Syntax Highlighter和使用

标签做的高亮被压缩,其他代码高亮插件请自行修改,不赘述。

前端代码压缩对于功能较多的网站有较为显著的加速效果,但比起来主机对加载速度的影响还是小很多了,所以这是个锦上添花的功能,而达不到雪中送炭的感觉,如果你想让你的WordPress网站更快一步,那就使用此功能吧。

文中代码参考了WP迷、张戈等多网站的代码,不一一列举,通通表示感谢!

本文最后更新于2017年3月29日,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!

html导入错误 wordpress,纯代码为WordPress压缩前端html代码 附BUG修复相关推荐

  1. js基础代码大全_关于前端业务代码的一些见解

    前言 如何写出可维护和可读性高的代码,这一直是一个困扰很多人的问题.关于变量如何起名.如何优化 if...else 之类的小技巧,这里就不做介绍了,推荐去看<代码大全2>,千书万书,都不如 ...

  2. 【Methodot低代码教程系列03】——零代码十分钟制作电影票房管理后台

    Methodot低代码教程系列第三课来啦! 本期课程详细视频戳这里>https://www.bilibili.com/video/BV1644y177Yy?spm_id_from=333.999 ...

  3. 开源推荐 | 携程 Foxpage 前端低代码框架

    作者简介 Jason Wang,携程研发经理,目前主要负责低代码类产品的设计和研发,关注低代码行业的发展及相关解决方案在企业内部的落地. 大厂技术  高级前端  Node进阶 点击上方 程序员成长指北 ...

  4. 开源 | 携程 Foxpage 前端低代码框架

    作者简介 Jason Wang,携程研发经理,目前主要负责低代码类产品的设计和研发,关注低代码行业的发展及相关解决方案在企业内部的落地. 一.背景 随着低代码开发方式被越来越多的人接受和认可,低代码得 ...

  5. 纯代码实现WordPress文章部分内容关注微信公众号后可见

    前言 最新有小伙伴问我一个问题,像辉哥博客有些文章是用的关注微信公众号并回复指定内容后获取验证码才能查看文章的部分内容是怎么实现的,今天辉哥就教你纯代码实现WordPress文章部分内容关注微信公众号 ...

  6. wp.qq.com.index.html,使用纯代码给WordPress添加文章目录功能,支持快速定位和多级目录...

    wordpress是一款强大的博客系统,支持各种DIY,今天我就给大家带来使用纯代码给Wordpress添加文章目录的功能,使看文章更简单!并且支持点击目录标题快速定位到文章页面指定内容点. 一.文章 ...

  7. WordPress纯代码实现自动为文章添加标签及标签内链接

    既然大家都知道Tag标签的作用,但是还是有很多站长不为文章添加Tag标签,主要原因就是每次发布文章都要手动为文章添加Tag标签,实在是太麻烦了. 那么有没有可能让WordPress站点自动为文章添加以 ...

  8. html页面 wordpress,WordPress纯代码实现前端页面HTML完美压缩

    前言:压缩HTML页面的好处就是略微提升页面加载速度,并给那些爱扒皮的缺德玩意制造些许麻烦. 好了将如下代码添加在functions.php中即可: //压缩WordPress前端html代码 fun ...

  9. 精通WORDPRESS设计与开发:第2章 代码概览

    本章内容 下载WordPress 配置wp‐config .php和.htaccess 探索wp - content目录 开启WordPress维护模式 WordPress是一个由一组执行系统内特定任 ...

最新文章

  1. Cacti on nginx + php-fpm
  2. 《研磨设计模式》chap23 职责链模式chainOfResponsibility(3)功能扩展+总结
  3. 各个行业纷纷瞅准了这块大蛋糕
  4. 一步步编写操作系统 43 汇编语言和c语言的理解
  5. python-解码 decode 报错的问题
  6. JQuery1.2.6 ui.dialog控件在IE6下标题栏显示不正常的问题解决
  7. 织梦生成的html路径,织梦dedecms安装在子目录网页生成在根目录如何设置
  8. Spark的新方案UnifiedMemoryManager内存管理模型分析
  9. 浅论 C++ 的复杂性
  10. linux 内核参数分析,linux 内核参数VM调优 之 参数调节和场景分析
  11. python实现485通讯_Python编程实现USB转RS485串口通信
  12. 数据结构:循环链表实现约瑟夫环
  13. xcodebuild命令行打包发布ipa
  14. Ubuntu虚拟机使用桥接模式设置IP
  15. Office之word如何去除尾注的横线?
  16. Vue入门(Vue.js,库与框架,MVVM,BootCDN,Vue入门,数据双向绑定,vue事件,生命周期,钩子函数 )
  17. octet和byte的差异
  18. 计算反转录转座子插入时间一:计算原理
  19. 多功能音频工具的旗舰音乐编辑工具!Music Studio
  20. 好看的css下拉框样式,实用的漂亮的下拉框-CUSTOM DROP-DOWN LIST STYLING

热门文章

  1. motan yar php,motan学习笔记 六 opentracing Brave+zipkin实现-Go语言中文社区
  2. Java设计模式(一):策略设计模式
  3. 深入理解JVM虚拟机(九):运行期优化与JIT编译器
  4. 使用SSH+SFTP操作终端全解析,告别XShell
  5. 【转载】Qt Creator 添加自定义注释
  6. Python的XML解析!
  7. Python pygame
  8. Go Language 开发环境搭建
  9. (转) Docker EE/Docker CE简介与版本规划
  10. Win7+VS2010环境下CEGUI 0.8.4编译过程详解