阿里云附件(WordPress插件)更新到 v2.0 beta版——发布重要更新!

2015-01-09

2016.04.06更新:升级到v2.1 beta版,链接地址:https://mawenjian.net/p/977.html

时隔两年,阿里云附件(Aliyun OSS Support)再次更新,针对v1.0版存在的问题进行了11项改进。欢迎各位体验并提出意见和建议!

两年前,为了满足自己的特定需求,将上传到WordPress的附件同步到阿里云OSS中,我写了阿里云附件(Aliyun OSS Support)插件的v1.0版本。做v1.0版的时候,我考虑的是只要能满足自己的基本使用需求即可,发出来纯粹是为了顺便方便大家,所以并没有对用户需求进行调研,代码质量也很低,还存在很多的BUG。

后来因为我的博客转为使用百度BCS作为云存储的缘故,这个插件便没有更新了,我把精力放在了BCS插件上。后来随着个人需求的增多,我对BCS插件进行了数个版本的更新,所以到最后,我便把这两个插件实现的功能、修复的BUG搞混了。以致当众网友给这个OSS插件提意见的时候,我竟会错以为功能已经实现了,也并未引起足够重视。直到前几天开始着手升级的时候,我才发现这个插件竟然还在如此初级的阶段。

虽然插件功能少、BUG多,但因为是发布时间最早的OSS同步插件,所以还是受到了众网友的谬赞。随着WordPress升级到新版本,众网友陆续反馈这款插件变得不可用,于是我便着手对这款插件进行升级。因为平时我就在考虑应当从哪些方面进行完善,所以实际操作起来,反倒没费什么力气。在经过大约两天的编码和测试后,这个v2.0 beta版的新插件就这么华丽丽地诞生了! 阅读全文 »

适用于阿里云ACE的WordPress Rewrite规则

2014-08-06

阿里云(Aliyun)

随着阿里云ACE(阿里云引擎)功能的日臻完善,我最近在考虑将博客迁移到ACE平台上。因为我的博客中的大部分URL都使用了Rewrite,可是偏偏网络上并没有适用于阿里云ACE的,所以我只能自己写了。

在经历了繁复的拼凑过程之后,终于给搞出来了:

rewrite:
- url: ^$
script: /index.php last
- url: ^/(?!wp-)([\w/_-]+(\.html$)?)$
script: /index.php/$1 last

阅读全文 »

W3 Total Cache(Wordpress缓存插件)生成缓存巨占空间

2013-01-27

wordpress-w3-total-cache

几天前登陆虚拟主机的控制面板,系统提示空间使用容量超过100M,使用率超过50%。因为最近存储了不少图片,所以我简单认为是图片过多的原因,并没有十分在意。但是今天再登陆,发现使用率居然飙升到了68%!照此速度,我的空间很快就要爆掉了。

于是赶忙检查,看到底是哪个玩意儿这么费劳资的空间。首先想到的是上传的图片。可是检查完后令我大吃一惊,所有上传图片加起来都不到4M,所以肯定不会是上传图片的问题。

会不会是生成日志太占用空间呢?理论上讲,随着访客的增多,日志文件大小呈递增趋势,这似乎也是一个合情合理的解释。但是我检查完虚拟主机的每个文件,都没有发现过量的日志。

那会是哪里的问题呢?没办法,我只能把整站下载下来检查了。好吧,于是我登进博客后台,清空W3 Total Cache生成的缓存;再进入万网管理后台,准备将文件压缩打包。没想到这时候奇迹出现了——虚拟主机使用容量瞬间降到了35M!这也就是说,是W3 Total Cache生成的缓存占用了如此巨大的空间。从理论上讲,我的整站大小30M左右,MySQL数据库5M,生成的缓存大小不应该到70M啊,真是不可思议。

赶快检查W3 Total Cache的配置,我发现我把Page Cache和Database Cache同时打开了。因为以前只开Page Cache没有问题,所以就是Database Cache的问题了。清空缓存,关掉Database Cache,情况总算好些了。

解决无觅和评论啦插件非文章页加载js的问题

2013-01-09

因为网站使用的主题不带随机文章显示功能,所以无觅插件对我来说十分重要;而出于速度优化的考虑,我使用了“评论啦”托管评论内容。总体上来说,这两个插件还是很给力的。但是,这两个家伙也有问题,就是非文章页面也加载js代码。虽然加载两个js小文件对访问速度的影响可以忽略不计,但是对爱瞎折腾的我来说,这是不能容忍的!

上网搜了半天,没人给出解决方案。好吧,还是靠自己吧……

1.先搞无觅插件:

打开wumii-related-posts.php文件,找到private function createWumiiScript() 函数,在第一行加上

if(!is_single()) return;

保存。

2.再搞评论啦插件:

打开pinglunla-comment-system.php文件,找到function pinglunla_output_footer_comment_js() 函数,在函数第一行加上

if(!is_single()) return;

再保存。

3.最后刷新缓存,搞定鸟…… SO EASY!

 

 

用W3 Total Cache插件与CDN配合对WordPress网站进行加速

2012-05-15

W3 Total Cache插件想必大家都已经再熟悉不过了,是目前使用最广的WP缓存插件之一。但是大家恐怕还不知道吧,W3 Total Cache插件的CDN加速功能也是很强大的。

W3 Total Cache的CDN功能既可以直接和Amazon CloudFront、Cotendo、Generic Mirror、NetDNA等CDN提供商的接口对接,还可以对Amazon CloudFront、Amazon S3、Microsoft Azure Storage、Rackspace Cloud Files进行推送服务。当然了,这些对于国内的用户都没有什么吸引力,毕竟都是国外的服务,距离我们有十万八千里之遥。

但是, W3 Total Cache 插件的CDN功能还可以使用FTP协议传输到远程附件服务器,这个功能对我们是超级有用的。我前面曾经介绍过使用Hacklog Remote Attachment插件通过FTP功能将WP的附件上传到附件服务器,但是不能很好地解决主题文件的托管加速问题。W3插件就不存在这个问题了,它可以遍历服务器中的文件,将你指定后缀的文件(比如.JS、.CSS、.JPG等)都上传到附件服务器,这样加速的效果就非常明显了。而且这个插件比较智能,你不必在每次上传附件后手工同步新文件,插件可以自动完成同步功能的。 阅读全文 »

禁用Wordpress文章目录的category前缀

2012-04-10

Wordpress默认的文章目录形式,是以/category/作为前缀的。虽然说使用起来也没什么不便,但看起来总觉的不太对劲。而且人家本来是一级目录吧,却显示成二级目录的样子,恐怕会对SEO造成一定的影响。

这不,今天我偶然发现了一款Wordpress插件,叫做WP No Category Base。这款插件就是专门去除/category/前缀的。使用方法很简单,Wordpress后台->安装插件->WP No Category Base->搜索->安装->激活,不需要做任何配置工作。一切如此简单!有缓存的刷新网站缓存,再打开你的网站首页,目录形式是不是变简洁了呢?

到这里,功能设置就算完成了。但为了搜索引擎能够找到目录的新家,所以不要忘了把旧目录做301重定向哦。 阅读全文 »

WordPress远程附件插件 - Hacklog Remote Attachment

2012-01-28

博客的附件保存一直是一个老大难的问题,和博客放在一起吧,太占空间了,毕竟博客的空间有限。像我的博客总空间才300MB,总不能把所有的空间都用于附件的保存吧。再说了,虚拟主机有流量限制,要是哪一天因为流量关系被咔嚓了,就太得不偿失了。还有,把程序和附件放一起的话备份也不方便吧,还得区分哪是程序文件、哪是资源文件。这不,我今天发现了一个叫做“Hacklog Remote Attachment”的插件,解决了这个困扰多时的WordPress附件的远程存放问题。

“Hacklog Remote Attachment”插件的原理很简单,就是当你将附件上传到Web服务器上之后,Web服务器再通过FTP方式将文件传送到远程附件服务器。同样,你在WordPress管理后台对附件的操作也会通过FTP协议同步到远程附件服务器。 阅读全文 »

我是怎样为WordPress博客加速的

2012-01-23

摘要:

  • 1. 选择一个合适的运行平台和网络环境;
  • 2. 删除不必要的插件,避免资源重复引入,调整资源引用顺序;
  • 3. 合并JS、CSS等静态文件,减少服务器请求次数;
  • 4. 对WordPress使用缓存机制,减少数据库查询次数;
  • 5. 动静内容分离,将动态内容(比如文章评论)进行托管;
  • 6. 定期优化MySQL数据库;
  • 7. 对请求文件进行压缩(比如GZIP压缩),降低网络流量;
  • 8. 设置文件过期时间,降低浏览器向服务器发起请求次数;
  • 9. 对静态文件启用独立二级域名,减小请求包大小;
  • 10.对静态文件启用CDN(Content Delivery Network)加速服务,将静态内容分发到网络边缘;
  • 11. 减少DNS请求次数;(废话,减少DNS哪儿那么容易啊)

阅读全文 »

晒晒我使用使用的WordPress插件

2011-12-28

我一共使用了16个WordPress插件,具体如下:

Akismet——反垃圾评论;

All in One SEO Pack——网站SEO优化;

Autoptimize——合并CSS、JS文件,减少服务器资源请求;

Baidu Sitemap Generator——百度站点地图生成工具;

Easy AdSense Lite——广告插件;

Google XML Sitemaps——生成Google站点地图;

NextGEN Gallery——相册插件;

Optimize DB——数据库优化工具;

SEO Friendly Images——补全图片的SEO信息;

Shutter Reloaded——图片特效插件;

Widget Logic——控制Widget的显示页面,主要用于控制“友情链接”只在首页显示;

WP-PageNavi分页导航——分页插件;

WP-T-Wap——生成网站的手机版本,http://wap.ehan.cn/

WP Cleaner——删除不需要的文章修订版,降低数据库冗余;

WP Keyword Link——自动为关键字添加超链接,有利于SEO优化;

WP Random Posts——随机文章插件;

WP Super Cache——缓存插件,减少数据库查询次数,提高网站性能;

无觅相关文章插件——显示和所阅读文章有关的文章;

评论啦社会化评论系统——将本站的评论托管在评论啦(pinglun.la),从而可以将站点完全静态化,提高浏览速度;也可以为将来使用CDN加速提供准备。

SAE环境下开启WordPress评论自动邮件回复功能

2011-11-28

鉴于SAE环境的特殊性,WordPress在常规PHP环境下的评论邮件自动回复功能不能正常使用,需要做一些改动才可以。

首先我要说明的是,我要实现的是让访客决定是否需要在有人回复他的时候接收邮件。

使用SAE Editor,进入所用主题的编辑界面,在functions.php文件中的<?php和?>之间添加以下函数:

/* 所有回复都发邮件 马文建的博客 https://mawenjian.net/ */
function comment_mail_notify($comment_id) {
  $admin_notify = '1'; // admin 要不要收回复通知 ( '1'=要 ; '0'=不要 )
  $admin_email = get_bloginfo ('admin_email'); // $admin_email 可改为你指定的 e-mail.
  $comment = get_comment($comment_id);
  $comment_author_email = trim($comment->comment_author_email);
  $parent_id = $comment->comment_parent ? $comment->comment_parent : '';
  global $wpdb;
  if ($wpdb->query("Describe {$wpdb->comments} comment_mail_notify") == '')
    $wpdb->query("ALTER TABLE {$wpdb->comments} ADD COLUMN comment_mail_notify TINYINT NOT NULL DEFAULT 0;");
  if (($comment_author_email != $admin_email && isset($_POST['comment_mail_notify'])) || ($comment_author_email == $admin_email && $admin_notify == '1'))
    $wpdb->query("UPDATE {$wpdb->comments} SET comment_mail_notify='1' WHERE comment_ID='$comment_id'");
  $notify = $parent_id ? get_comment($parent_id)->comment_mail_notify : '0';
  $spam_confirmed = $comment->comment_approved;
  if ($parent_id != '' && $spam_confirmed != 'spam' && $notify == '1') {
    $wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); // e-mail 发出点, no-reply 可改为可用的 e-mail.
    $to = trim(get_comment($parent_id)->comment_author_email);
    $subject = '您在 [' . get_option("blogname") . '] 的留言有了回复';
    $message = '
    <div style="background-color:#eef2fa; border:1px solid #d8e3e8; color:#111; padding:0 15px; -moz-border-radius:5px; -webkit-border-radius:5px; -khtml-border-radius:5px;">
      <p>' . trim(get_comment($parent_id)->comment_author) . ', 您好!</p>
      <p>您曾在《' . get_the_title($comment->comment_post_ID) . '》的留言:<br />'
       . trim(get_comment($parent_id)->comment_content) . '</p>
      <p>' . trim($comment->comment_author) . ' 给您的回复:<br />'
       . trim($comment->comment_content) . '<br /></p>
      <p>您可以点击<a href="' . htmlspecialchars(get_comment_link($parent_id)) . '">查看回复的完整內容</a></p>
      <p>还要再度光临 <a href="' . get_option('home') . '">' . get_option('blogname') . '</a></p>
      <p>(此邮件由系统自动发送,请勿回复.)</p>
    </div>';
    $from = "From: \"" . get_option('blogname') . "\" <$wp_email>";
    $headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
    wp_mail( $to, $subject, $message, $headers );
    //echo 'mail to ', $to, '<br/> ' , $subject, $message; // for testing
  }
}
add_action('comment_post', 'comment_mail_notify');

/* 自动加勾选栏 */
function add_checkbox() {
  echo '<input type="checkbox" name="comment_mail_notify" id="comment_mail_notify" value="comment_mail_notify" checked="checked" style="margin-left:20px;" /><label for="comment_mail_notify">有人回复时邮件通知我</label>';
}
add_action('comment_form', 'add_checkbox');
// -- END ----------------------------------------

如果是普通PHP环境的话,完成此步就可以实现回复的功能了。 阅读全文 »