这是bulaoge上一个挺有意思的功能,能自动在你发的帖子末尾加上以前你曾经在这个日期发布过的主题链接,去年的,前年的——多年以前的12月21日这一天我写了什么?
在WP的插件库里找了很长时间,有个1 Year Ago,能在侧栏显示一年前的帖子,但是它的时间基准是当前时间;还有个“Around this date in the past…”算是“1 Year Ago”的增强版,可以显示任意时间段的帖子,但问题同上,仍然不能基于某篇帖子显示那个日期不同年份的发布内容。最后只好考虑自己做个了。
好在查了文档之后发现还不是太难,代码量很小,不过WP上面写个内容真是不容易,编辑器里满是php标签和html标签混插,可读性极差。这点比EE差远了。
OK,来看代码,加在单篇文章的末尾即可:
<!-- amio: today in history [tih] -->
<?php
$tih_date = split('-',the_date('n-j','','',false));
$tih_args = array(
'monthnum' => $tih_date[0],
'day' => $tih_date[1],
'order' => 'DEC',
'orderby' => 'date',
'exclude' => $post->ID
);
$postslist = get_posts($tih_args);
if($postslist):
?>
<div id="tih">
<span class="tih-header">历史上的今天 | Today In History</span>
<?php foreach ($postslist as $post) : ?>
<div class="tih-item">
<span class="tih-pdate"><?php the_time('M j, Y'); ?> - </span>
<a class="tih-plink" href="<?php the_permalink(); ?>" id="post-<?php the_ID(); ?>"><?php the_title(); ?></a>
</div>
<?php endforeach; ?>
</div>
<?php endif; wp_reset_query(); ?>
<!-- amio: today in history [tih] : over -->
剩下的就简单了,样式搞下即可。这是我的,请随意修改怎么好看怎么来:
#tih .tih-header { font-size: 12px; font-weight: bold; color: #000; display: block; padding: 4px 0; width: 300px }
#tih .tih-item { padding: 2px 50px }
#tih .tih-pdate { color: #999 }
#tih a.tih-plink { text-decoration: none; color: #222 }
#tih a.tih-plink:hover { color: #000 }
Live Demo:见本文末的“历史上的今天 | Today In History”。
BTW:
WP的自动HTML格式化也不好用啊原来(⊙v⊙)…编辑器样子不错就是。也不能自定义,最大的问题是解析不能自动略过<code>中的内容,除非你手动把代码里的“<”全都修改为字符实体。幸好WP插件多,找了个 Preserve Code Formatting Settings,这下才舒服了。
Update 1 (2010-01-10):
发现点Bug,对于某些帖子会导致当页的评论显示为另一篇帖子的评论,最近事儿多,稍后会查这个bug,暂时请勿使用本贴代码。
Update 2 (2010-01-18):
问题解决,代码已更新。
Thanks to Miu for a relaxing talk.
历史上的今天 | Today In History
Dec 21, 2009 -
从ExpressionEngine到WordPress
Dec 21, 2006 -
ExpressionEngine 模板安装方法