今天写了一个插件,用来专门处理wordpress的css和js文件合并问题。在我们的开发中,我们常常会考虑把多个文件合并为一个,用一个URL就可以解决原来需要多个URL才能解决的链入问题。当然,如果了解过类似淘宝css输出的服务端技术,那么无需再为此烦恼。为了和WordPress结合,我专门写了这个插件,虽然在WordPress官方目录中我已经发现有这个插件存在了,但是我仍然把这个插件的名称定为wp-minify。
实现原理
如果你读过我之前的《PHP合并压缩css输出 模块化css撰写》可以先了解我对缓存文件的一些处理方式,以及合并文件、压缩代码的一些想法。而本插件的实现原理则基本上和上面的这篇文章里介绍的差不多。
安装
首先,下载这个插件,我把它托管在我的GitHub上,你可以在这个页面下载。下载好之后,进行解压,解压完直接把解压出来的整个文件夹上传到你的WordPress网站插件目录下。然后去后台启用它。
使用
进入后台,在“设置”菜单下有一个子菜单“Minify”,进入后可以对它的各个选项进行设置,而且都有注释,可以了解功能。
使用wp-minify必须修改主题,因为你输出css和js的方式不一样了。 在你的主题中,删除原来的CSS和JS输出,使用如下的方法输出JS:
<?php wp_minfiy_js(array('/wp-content/themes/yourtheme/js/base.js','/wp-content/themes/yourtheme/js/module.js','/wp-content/themes/yourtheme/js/others.js'));
输出css的方法是一样的,只不过要使用另外一个函数wp_minify_css()
。函数的参数是一个数组,数组内部的元素是脚本文件的路径,以WordPress安装目录为根目录,写入完整的相对路径。
为什么要相对于WordPress的根目录写脚本呢?而不是相对你当前的主题目录呢?其实道理很简单,因为你所引用的css或者js不一定是主题目录下的,有的时候你会引用其他目录下面的样式或者脚本。当然,这是相对路径,你甚至可以引用WordPress上一级目录的脚本,例如 "/../test.js",但是注意,脚本的开头一定要用/开头,否则可能引起相对路径错误。
另外,我还提供了另外一个类用于通过action挂载到wp_head或wp_footer中。具体用法如下:
<?php new wp_minify_css_action(array('/wp-content/themes/yourtheme/css/test.css')); wp_head();
wp_minify_css_action这个类可以直接实现把输出的内容挂载到wp_head处。利用这个特性,你可以使用这个类,做一些其他的深度开发,比如你想在所有的路径中增加base.css这个文件,你并不需要在每一个action中都这么写。我提供一种方法:
// functions.php function add_minify_css($files) { array_unshift('base.css',$files); foreach($files as &$file) { $file = '/wp-content/themes/yourtheme/css/'.$file; } new wp_minify_css_action($files); } // single.php add_minify_css(array('single.css','comment.css')); wp_head();
就像上面这样,可以让你的程序写的更加简单一些。
2016-05-02 11784
请求出一个详细的教程,如何删除主题的js和css输出,不同主题会不会有不同的方式,安装好插件停止在这一步,内心很痛
如果你不会,可以找我,提供付费协助哦
使用了 但是cache文件夹中并没有缓存文件
你要检查一下你的目录有没有可写权限
顺便把html压缩也加上吧
以前有这样做过,但是压缩html之后其实存在一些问题,比如pre标签怎么办?空白或换行实现的空格怎么办?诸如这些问题让我放弃了压缩html的念头。
唔。。看起来很不错的样子。看来可以考虑直接集成到主题中使用哈
根据自己的需要集成,主要是一些主题里面用到比较多的脚本文件的时候可以考虑,将多个合并一个,可以减少http请求,加快加载速度