WordPress 阻挡垃圾评论

我的博客人气一般,但是垃圾评论却特别之多,严重影响我的心情。自从开博客以来,我一直都是通过 Akismet 插件来发现和过滤垃圾评论,效果非常不错,很少有漏网之鱼。但是前两天在阅读了云淡然同学写的文章wp_create_nonce实现wordpress垃圾评论终极防御之后,我突然萌生出自己写一些阻挡垃圾评论策略的想法。

wordpress-spam

下面我介绍几条本博客现在正在使用的阻挡垃圾评论的策略,几天下来效果还可以接受。每一种策略都不是完美的,所以只能多种方式配合使用。当然,道高一尺,魔高一丈,很多策略都必须要不断地改进与完善,并且最好根据自己的情况适当地调整。当然,如果你不想折腾,还是老老实实地使用 Akismet 插件来防护吧,插件的功能更加完善可靠,本文的方法只适合于不想启用过多插件和喜欢折腾的同学。

.htaccess 文件

首先我们可以借助 .htaccess 文件来阻挡部分恶意的垃圾评论,这一类评论往往是通过脚本或者工具自动提交的。请将以下内容添加到网站根目录的 .htaccess 文件中:

RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php$
RewriteCond %{HTTP_REFERER} !.*kodango.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) http://%{REMOTE_ADDR}/$ [R=301,L]

上面的几条规则,可以阻挡来源不是你博客,或者 user agent 信息为空的机器人评论。

查看全文

rsync 同步文件重复拷贝问题

newrsynclogo

rsync 是同步文件的利器,一般用于多个机器之间的文件同步与备份,同时也支持在本地的不同目录之间互相同步文件。在这种场景下,rsync 远比 cp 命令更加合适,它只会同步需要更新的文件,默认情况下,rsync 通过比较文件的最后修改时间(mtime)和文件的大小(size)来确认哪些文件需要被同步过去。

最近刚好有一个需求,需要将文件从一个目录同步到另外一个目录去,我就首先试了下下面的命令:

# mkdir src dest
# echo hello > src/one.txt
# rsync --stats src/1.txt dest

这里加上 --stats 的目的是为了显示文件传输的详细信息。执行完成后文件已经同步到目标目录,非常简单,但是如果再执行一次,我们会非常尴尬地发现文件被再次同步过去:

# rsync --stats src/one.txt dest

Number of files: 1
Number of files transferred: 1
Total file size: 6 bytes
Total transferred file size: 6 bytes
Literal data: 6 bytes
Matched data: 0 bytes
File list size: 21
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 77
Total bytes received: 31

sent 77 bytes  received 31 bytes  216.00 bytes/sec
total size is 6  speedup is 0.06

查看全文

初试 Magic Mouse

期待已久的 Magic Mouse 终于到手了,之前一直在纠结到底选择 Magic Mouse 还是 Magic Trackpad,最终还是选择入手 Magic Mouse,从淘宝上选择了一家散装配件卖家, 咬牙丢进购物车马上下单,然后就开始漫长地等待过程。

本来按照预计,快递应该差不多 1-2 天就应该到的,结果申通非常地不给力,竟然耽搁了4、5天,走到今天(10-15)才到:

sto-express

而且中间很多次联系申通的客服,每次答复都是"我会帮你联系下对方, 稍后再回复你",然后就没有然后了,可惜没评分,要不然果断差评。余杭的申通分公司更加离谱,留下的座机号码压根打不通,一直占线。以后淘宝购物,如果有可能一定要避免使用申通(当然,我一直认为国内的快递没几家是好的)。

查看全文

WordPress 置顶文章推荐

新浪微博的置顶功能相信大家非常熟悉,其实 WordPress 早在 2.7 之后就拥有了文章置顶的功能。但是,实际上这个功能在大多主题上却没太多用武之地。我想其中的一个原因,是很多像我们这样的个人博客,首页基本上只展示最新的5-10篇文章,如果再置顶个几篇,首页的内容基本上就不变了。

不过,如果我们换个角度,把置顶文章从页面中央移到侧栏,这样的 效果应该会不错,首先首页的文章列表中不会受到置顶的干扰,同时位于侧栏的置顶文章又有类似文章推荐的效果,我们动手来试试。

整个解决方案需要考虑到两点:

  1. 首页展示文章的时候要忽略置顶文章,这里的忽略是指不置顶显示;
  2. 侧栏需要增加显示置顶文章列表的小工具;

步骤一:首页忽略置顶文章

在主题的 functions.php 中加入以下代码:

/*
 * Alter the main loop
 */
function dangopress_alter_main_loop($query)
{
    /* Only for main loop in home page */
    if (!$query->is_home() || !$query->is_main_query())
        return;

    // ignore sticky posts, don't show them in the start
    $query->set('ignore_sticky_posts', 1);
}
add_action('pre_get_posts', 'dangopress_alter_main_loop'); 

这里通过指定ignore_sticky_posts为1,查询出的文章列表就会忽略置顶文章。

查看全文

WordPress 使用 Google Code Prettify 高亮代码

Google Code Prettify 是 Google 开源的一个用于代码高亮的 Javascript 库,支持 C/C++, Java, Python, Ruby, PHP,Javascript 等等常见语言,目前包括 Google Code、Stackoverflow.com 在内的很多网站都在使用它。最吸引人的是,在使用它进行代码高亮时,甚至不需要指明语言类型,Prettify 会自动判断并处理。

google-code-prettify-javascript-syntax-highlighter

使用 Prettify 一般只需要包含两个文件:prettify.js 和 prettify.css,压缩过后的 prettify.js 大小差不多在 15K 左右,非常小巧。

简单使用

在网站页面中引用 Prettify文件:

<link href="prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="prettify.js"></script>

同时增加以下代码,让页面加载完成时执行 Prettify:

<script type="text/javascript">
window.onload = function(){prettyPrint();};
</script>

Prettify 会在网页中查找<pre class="prettyprint">...</pre>或者<code class="prettyprint">...</code>包围的代码片断,对它们进行高亮。

查看全文

WordPress 访客评论显示欢迎信息

最近逛了不少的博客,发现有一个共通的小细节:当你再次访问时,在评论框上方会显示类似“欢迎回来,xxx..”的信息。当时觉得这个想法挺不错的,一定程度上提高了用户体验,因为访客短期内再次访问时,不需要重复输入个人的信息。

关于这个话题,Neoease 有专门写过一篇文章来介绍如何实现 —— 提高 WordPress 访客评论时的用户体验。这次我在制作 dangopress 时,也顺手加上了这点。效果参考下图:

关键问题:获取访客信息

花点时间去研究,其实整个实现过程并不复杂。这里的关键点是,如何判断访客已经在近期发表过评论。

查看全文

WordPress 分开显示评论与 Pingback

WordPress 中的留言有三种类型,分别是普通评论、Pingback 和 Traceback。Pingback 和 Trackback 都是别人对你文章的引用,两者有一些区别,但是实际上差不多。就我博客上的评论来说 Pingback 类型的居多,因为这种引用是自动完成的。

当你在文章中引用另外一篇文章的地址时,Wordpress 就会给对应的网站发送Pingback,当这些网站收到回复时,就会将 Pingback 的信息显示在评论中。关于这 Pingback 和 Trackback 的更多对比,可以阅读下这篇文章 WordPress中的Ping、Trackback与Pingback:概念、区别与运用

当然,最终是否显示 Pingback/Trackback 类型的评论完全由主题自行决定。有些主题选择干脆只显示普通类型的评论,而有些主题显示全部评论。dangopress 主题选择了后者,这也是大多数主题的方式。但是如果将这几种类型的评论混杂在一起,难免显得有点混乱,所以在这里本文介绍一种将普通评论与 Pingback/Trackback 区分显示的方法,这个方法参考自 WordPress 2.7 Trackbacks 的两种处理方法 - NeoEase

除了做基本的区分之外,我们还希望能够分别显示普通评论与 Pingback/Trackback 的数目。最终的显示效果参考本博客:

查看全文

dangopress: 简单的自适应主题

dangopress 是我自己独立创作的第一款免费主题,主打简洁风格,双栏布局。主题包含代码高亮、支持第三方 CDN、支持网站统计分析、侧栏跟随等等功能,以及许多细节上的打磨和优化,有兴趣的同学可以下载体验。主题已经上传到 Github,可以免费下载,暂时还没有打算提交到官方主题库中。

我的性子比较喜欢折腾,主题经常换来又换去,下载了别人放出的主题之后,一定要亲手“打磨”过之后才会使用。几次下来,新鲜劲刚过,又开始寻觅新的主题。从开始使用 WordPress 开始,我就有一个愿望可以自己亲手实现一份主题,现在愿望实现了,感觉真不错。

主题的许多素材都是来源自网上,最初原型是来自 牧风 现在的主题,同时也参考了很多 Neoease 博客上的元素。当然还有,例如邮件回复、归档页面、最近评论等等,都来自网上各位同仁的分享。所以主题完成之后,我就立马上传到 Github 上了。

主题安装方法:

  • 推荐 Github Release 页面下载最新版本;
  • 从 Github 下载最新代码:
  • # git clone https://github.com/dangoakachan/dangopress
    

    将 clone 下来的整个目录压缩成 zip 包。

到 WordPress 后台上传安装主题,主题有几个自定义的选项,请自行设置。如果有问题需要帮忙,欢迎在本博客评论。

dangopress 主题特性

dangopress 双栏设计,白底黑字,属于简洁风格。

主题拥有以下特性(包括但不仅限于):

  1. 集成侧栏跟随滚动功能
  2. 支持添加百度分享、百度统计以及 Google Analytics 统计代码,主题后台可配置;
  3. 默认自带代码高亮功能,通过 Google Code Prettify 实现;
  4. 评论支持回复邮件提醒功能,邮件内容已定制;
  5. 支持将博客静态文件上传到 CDN,主题后台可配置 CDN 地址前缀(本博客的一些静态文件都是托管在 OSS 上的,关于 WordPress 使用 OSS 可以参考我之前写得一篇文章);
  6. 侧栏包括最新、随机、置顶以及热评文章,以 Tab 选项卡形式呈现;
  7. 简单的多种宽度设备(手机、平板、电脑)样式自适应,效果见下方;

查看全文