我使用的历史上的今天代码

侵权勿怪。
话说这东东实在是忘记了从哪个插件的代码里扒出来的,自己改良了一番。却没想到有人感兴趣。就简单说一说用法吧。
首先,把下面这个函数粘贴到function.php里

function history_today($post_year, $post_month,$post_day ){
	global $wpdb;
	//SQL语句里的项目可以随意改良,想要加什么效果请在主贴回复,@lifishake愿意为你服务
	$sql = "select ID, year(post_date_gmt) as h_year, post_title, comment_count FROM 
			$wpdb->posts WHERE post_password = '' AND post_type = 'post' AND post_status = 'publish'
			AND year(post_date_gmt)!='$post_year' AND month(post_date_gmt)='$post_month' AND day(post_date_gmt)='$post_day'
			order by post_date_gmt";
	$histtory_post = $wpdb->get_results($sql);
	if( $histtory_post ){
		foreach( $histtory_post as  $post ){
			$h_year = $post->h_year;
			$h_post_title = $post->post_title;
			$h_permalink = get_permalink( $post->ID );
			//注意下边,输出的格式可以自行调整,不愿意加年的把$h_year去掉即可
			$h_post .= "<li>$h_year:&nbsp;&nbsp;$h_post_title</li>";
		}
	}
    $content='';
	if ( $h_post ){
		$content = $content.$h_post;
	}
	echo $content;
	return $content;
}

对于这个函数,我在现在的主题中两处用到了它。
第一个是用在calendar的下方。

<li><?php get_calendar(); ?></li>
				<?php $post_year = date('Y'); $post_month = date('m');	$post_day = date('j');
					history_today($post_year, $post_month, $post_day); ?>

其实这个用法是假的,跟calendar一点儿关系都没有,即使点击calendar进了archive里,显示的也还是历史上的“今天”,因为date()取出来的就是今天。我只不过是觉得把“历史上的今天”放在那个位置比较合适而已。
至于“历史上的帖子发出的那一天”,用法是这样的:
如果在single里直接调用,那么照下边的样式粘贴:

<?php
echo '<h3>历史上的今天:</h3>' ;
		$post_year = get_the_time('Y');
		$post_month = get_the_time('m');
		$post_day = get_the_time('j');
		history_today($post_year, $post_month, $post_day);
?>

如果是在singlesidebar里,则要多加一个是否是single的判断条件:

<?php if ( is_single() ){
echo '<h3>历史上的今天:</h3>' ;
		$post_year = get_the_time('Y');
		$post_month = get_the_time('m');
		$post_day = get_the_time('j');
		history_today($post_year, $post_month, $post_day);}
?>

备注:
此代码实现的其实是“历史上不是这一年的月日相同的这一天”。如果真要实现的话,把第一段代码中的

year(post_date_gmt) != '$post_year' 

改成

year(post_date_gmt) < '$post_year'

即可。

Q&A:
留着答疑。

已有21条评论

  1. 这样调用蛮常用的

  2. 我终于明白为什么一直调不出来了= =
    我应该用calendar方法的结果一直在跟single方法拼命。。我太2了!

  3. 成功了……我把调用函数放在了随机日志的下面,试了无数次只是带年份的随机日志……调在随机的上面了……就正常了= =
    多谢啊多谢o(∩_∩)o

  4. 貌似一个叫柳成的人还是谁 做过这个插件。。

  5. 我记得柳城写过插件,不过我更喜欢非插件的,哈哈

  6. 恶搞谁?

  7. 插与不插,不过一念之间.

  8. 非插件是王道啊~

  9. 初看还以为是历史上的今天都发生了什么大事呢。。。

  10. 那种插件也是有的.不过因为维基被封,所以使用普及率甚低.

  11. 主题在IE6下,有些错乱。

  12. 看过,忘了哪个插件

  13. 网上好像有这类的代码,好像互动百科都有的吧,没有用过

  14. 博客很漂亮啊!~文章写的有好,。。。顶

  15. 没看到那个大大的警告吗,早就放弃IE6了

  16. 个人认为把这样的代码放在自己的网站上是一种累赘。

  17. 各有所好呗。我就喜欢去别人站上刨坟。

  18. 那个,我试用后,发现列出的文章发表日期有些不是历史上的今天的。什么问题?

  19. 你莫不是把代码放在了随机日志的后面?

  20. 唔,那就不知道了。我当时遇到这个问题是把它放在后面的时候会随机,放在之前就正常了。

  21. 是不是你发表了之后又有修改啊?

  22. 你直接上mysqladmin上把那段代码执行一下,单引号里的内容用随便哪天的年月日代替一下,看看出来的东西是不是对的,如果对,那就是代码可能跟你的其他插件有冲突,如果不对,可能是修改日期或者时区捣的鬼.

你好,新朋友。留言前请先填写昵称邮箱