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

侵权勿怪。
话说这东东实在是忘记了从哪个插件的代码里扒出来的,自己改良了一番。却没想到有人感兴趣。就简单说一说用法吧。
首先,把下面这个函数粘贴到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 .= "
  • $h_year:  $h_post_title
  • "; } } $content=''; if ( $h_post ){ $content = $content.$h_post; } echo $content; return $content; }

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

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

    历史上的今天:' ;
    		$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的判断条件:

    历史上的今天:' ;
    		$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. Warning: copy(http://www.gravatar.com/avatar/3d2de3ab55643b951ee6f2a5096122f6?s=64&d=https://pewae.com/wp-content/gallery/gravatar_cache/default.png&r=G): failed to open stream: HTTP request failed! HTTP/1.1 503 Backend fetch failed in /www/advanced/pewae_com/wp-content/plugins/apip/apip.php on line 1368
    3. 我终于明白为什么一直调不出来了= =
      我应该用calendar方法的结果一直在跟single方法拼命。。我太2了!

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

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

    6. 天· 这次是不懂了 好专业·····

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

    8. 用这个方法恶搞?

    9. 恶搞谁?

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

    11. 非插件是王道啊~

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

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

    14. 围观哈子

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

    16. 看过,忘了哪个插件

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

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

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

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

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

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

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

    24. 放在隨機日誌的前面。

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

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

    27. 没有啊,一次过的

    28. =。=
      难道是我RP爆发了…..

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

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