把WordPress升级到了3.3,同时主题也整合了一些插件,整合完插件之后,又弄了个主题自校验和复制自定义表情图像到默认的wp-includes/images/smilies。因为WordPress自带动表情特难看,所以果断替换,而每次升级主题就要手动上传覆盖,每次升级感觉特麻烦,于是来了个半自动,只要一个按钮,就可以轻松替换原有的自带表情。
主题文件校验
原理是在主题目录建立一个files.sum文件,此文件包含主题所有文件的md5值,自校验就是通过读取该文件与每个文件对比md5值,如果修改或者已经删除,则给出相应的提示。
这个只是一个例子,对于更多的功能可以自己发挥了,譬如我之前所写的增加站点维护提示,就可以给这个一个拓展,我们可以验证主题文件是否被修改(被社工hack),如果修改则增加站点维护提示,而避免其他的显示信息,当然你也可以给全站增加md5文件验证,只要任何一个文件有个变动,你也可以了若指掌,其实建议对于重要的目录验证,如果对于全站验证,相信没几天你的主机商就会警告你,CPU长时间占用过多。至于对全站自校验所占用的cpu和内存还不得而知,如果进行了全站自校验,可以来个反馈。
替换自带表情
替换自带表情的前提是主题文件里包含一个smilies的表情文件夹,为什么不直接引用主题文件夹里面的表情,非要折腾一圈要用wp-includes/images/smilies这个我还没有研究过,记得之前调用愣是没把主题文件下smilies的表情路径弄对,所以至今每次升级就覆盖wp-includes/images/smilies的表情,从而达到替换的效果。
额外说明
此操作要有一点基本的php知识,其中验证的class是来自一个老外的主题,xcopy则借鉴了网上的方法,因为php只支持单个文件拷贝,而对目录则会提示错误。我是将这个功能整合到了主题选项里面,而下面的则是一个UI界面checksum.php和一个所需要调用的类checksum-class.php。
File:checksum.php
verify($path, $log,'files.sum');
if ($count = count($log)) {
$html[] = '有些文件已被修改,请检查!如果是本人操作,请重建md5sum!';
$html[] = '
- ';
foreach (array('modified', 'missing') as $type) {
if (isset($log[$type])) {
foreach ($log[$type] as $file) {
$html[] = '
- '.$file.($type == 'missing' ? ' (missing)' : null).' '; } } } $html[] = '
File:checksum-class.php
_readDirectory($path);
if (is_array($files)) {
$checksums = '';
foreach ($files as $file) {
// dont include the checksum file itself
if ($file == $filename) {
continue;
}
$checksums .= md5_file($path.$file)." {$file}\n";
}
return file_put_contents($path.$filename, $checksums);
}
return false;
}
/*
Function: verify
Verify file checksums
Parameters:
$path - Path to files
$log - Log array
$filename - Checksum filename
Returns:
Boolean
*/
public function verify($path, &$log, $filename = 'checksums') {
$path = rtrim(str_replace(DIRECTORY_SEPARATOR, '/', $path), '/').'/';
if ($rows = file($path.$filename)) {
foreach ($rows as $row) {
$parts = explode(' ', trim($row), 2);
if (count($parts) == 2) {
list($md5, $file) = $parts;
if (!file_exists($path.$file)) {
$log['missing'][] = $file;
} elseif (md5_file($path.$file) != $md5) {
$log['modified'][] = $file;
}
}
}
}
return empty($log);
}
/*
Function: _readDirectory
Read files form a directory
Parameters:
$path - Path to files
$prefix - Prefix
$recursive - Recursive
Returns:
Array
*/
protected function _readDirectory($path, $prefix = '', $recursive = true) {
$files = array();
$ignore = array('.', '..', '.DS_Store', '.svn', '.git', '.gitignore', '.gitmodules', 'cgi-bin','.sum','.bak');
foreach (scandir($path) as $file) {
// ignore file ?
if (in_array($file, $ignore)) {
continue;
}
// get files
if (is_dir($path.'/'.$file) && $recursive) {
$files = array_merge($files, $this->_readDirectory($path.'/'.$file, $prefix.$file.'/', $recursive));
} else {
$files[] = $prefix.$file;
}
}
return $files;
}
function xCopy($source, $destination, $child){
//用法:
// xCopy(“feiy","feiy2″,1):拷贝feiy下的文件到 feiy2,包括子目录
// xCopy(“feiy","feiy2″,0):拷贝feiy下的文件到 feiy2,不包括子目录
//参数说明:
// $source:源目录名
// $destination:目的目录名
// $child:复制时,是不是包含的子目录
if(!is_dir($destination)){
mkdir($destination, 0777);
}
$handle=dir($source);
while($entry=$handle->read()) {
if(($entry!=".")&&($entry!="..")){
if(is_dir($source."/".$entry)){
if($child)
xCopy($source."/".$entry,$destination."/".$entry,$child);
}
else{
copy($source."/".$entry,$destination."/".$entry);
}
}
}
return true;
}
}
?>
深层次折腾啊,我玩不转~~~
你的主题可以换一换,图片代码显示都不是很好。
首先,我的链接怎么从你的上消失了?我也没问啥原因,就把你的也删了,有啥误解? ➡ 你说显示有问题,我特地装了个maxthon测试了下,没问题。我主题实在firefox,chrome,opera及IE9测试出来的,在这几个浏览器显示正常。
没有什么误解,我们的交流也少。我删你链的那时,是你博客不能访问了,私密了。今天也在处理友链,就过来看看了。发现你还是挺多更新的。可能大家对相互的内容都不感兴趣了,也没什么。有空我还是会来逛逛的。
我用的是CHROME,图片不能都在文章内显示,会越到侧边栏去。
我的chrome怎么就显示正常啊……你是啥系统?我的版本16.0.912.75正常啊。 ❓
17.0.963.83
就是文章的页面的宽度不够,但是图片又有点宽。
这个我之前弄了min-width了,今晚看了下的确以前改的恢复之后不起作用了。你用的多少分辨率的显示器?
呃,也是我电脑问题,会吓到你的,1024*600
只见过1024×768的。重新改了css,应当没问题了,早点睡吧。。早起早睡,天天向上!
嗯嗯