好吧,手上还有两三个任务没有完成,更新博客就只能长话短说了,我就偷闲小小地折腾一下 WordPress 啦。折腾是最好的发现问题的办法,也是最好的解决问题的办法,今天折腾的主题就是:给 WordPress 的最新文章添加 New 小图标。

其实这个话题已经有不少人讨论过了,一搜一大把,实现的方法也很多,关键就是这方法,我研究了几种并分了一下类,从实现的原理上讲一般可以分为两种:

方法一:

[cce_php]
<?php
function add_title_icon($title)
{
global $post;
$post_date=$post->post_date;
$current_time=current_time('timestamp');
$diff=($current_time-strtotime($post_date))/3600;
$title_icon_new=get_bloginfo('template_directory').'/images/title_icon/new.gif';
if($diff<24)
{
$title='<img src="'.$title_icon_new.'" />'.$title;
}
return $title;
}
add_filter('the_title','add_title_icon',999);
?>
[/cce_php]

把以上代码插入在主题文件夹的 functions.php 里就行了,PS:该方法选自荒野无灯:http://www.ihacklog.com/wordpress/wpskills/add-a-new-icon-to-your-title.html,荒野的原文中还有置顶文章的小图标显示方法,不过不在本文的讨论范围内,我把相关的代码删除了,只保留了最新文章显示 NEW 小图标的部分。有兴趣的朋友可以直接前往看一看瞧一瞧。

方法二:

[cce_php]
<?php
$t1=$post->post_date;
$t2=date("Y-m-d H:i:s");
$diff=(strtotime($t2)-strtotime($t1))/3600;
if($diff<24){echo '<img src="'.get_bloginfo('template_directory').'/images/new.gif" />';}
?>
[/cce_php]

把这段代码加到需要的地方就行,比如 single.php 中的 <?php the_title(''); ?> 前。PS:这个方法我已经找不到出处了,作者朋友看到请吱一声。

再来比较一下方法一和方法二的区别,方法一用到了 hook,也就是钩子,打击面一大片,比如说首页和内页的正文标题处、侧边栏的最新文章、甚至是后台控制板编辑文章的标题前也会自动添加 NEW 小图标;而方法二只是在需要的地方添加。这就好比,在 single.php 中给 WordPress 添加日志签名档和让 WordPress feed 输出版权信息的区别是一样一样的,都是 hook 搞的鬼。