看到很多网站都有一个很好的功能,就是历史上的今天。这个功能尤其是在历史类的博客网站里受到广泛的应用,很好地增加了网站的可读性和用户体验。

下面分享一下如何为你的WordPress网站添加“历史上的今天”功能。

可以从两方面考虑,一个是代码实现,一个事插件实现。

先来分享一下如何用代码来实现这一功能。

使用代码实现WordPress网站添加“历史上的今天”功能

第一步:先写好XML文件,准备写12个XML文件,对应12个月份,之所以12个文件也是为了日后的维护方便和读取数据的速度更加快速。如果要修改历史内容,直接编辑 xml 文件即可。

xml 文件格式如下:

1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?> 
<today>
<date1m1d> <date>1月1日,元旦</date> <event>1995年,世界贸易组织成立</event> </date1m1d>
<date1m2d> <date>1月2日</date> <event>1959年,苏联成功发射第一个星际探测器月球1号</event> </date1m2d>
 ……
(注:按此格式写到30/31日) </date1m31d>
</today>

第二步:将下载好的12个XML文件放到你的网站根目录

第三步:在你当前主题的 functions.php 文件中追加如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
function dateFromClmao(){ date_default_timezone_set('PRC');
  $i=date('n',time()); 
  $filename='today'.$i.'.xml';
  $xml=simpleXML_load_file($filename);
  $todaytime="date".date("n\mj\d",time());
  return $xml->$todaytime->date; } 
function eventFromClmao(){date_default_timezone_set('PRC');
  $i=date('n',time());
  $filename='today'.$i.'.xml';
  $xml=simpleXML_load_file($filename);
  $todaytime="date".date("n\mj\d",time());
  return $xml->$todaytime->event; }

第四步:在你想输出“历史上的今天的地方”的模板文件地方如此,样式自己添加。

1
2
<?php echo dateFromClmao(); ?> //这个是输出时间。
<?php echo eventFromClmao(); ?> //这个是历史事件。

上面的两个函数,大体一样,所以简单综合下,可以写成一个函数,添加一个参数判断:

1
function wpdx_today_in_history($type){date_default_timezone_set('PRC'); $i=date('n',time()); $filename='today'.$i.'.xml'; $xml=simpleXML_load_file($filename); $todaytime="date".date("n\mj\d",time()); if($type = 'date') return $xml->$todaytime->date; elseif ($type = 'event') return $xml->$todaytime->event; }

将上面的代码添加到当前主题的 functions.php 即可,调用方法如下:

1
2
<?php if(function_exists('wpdx_today_in_history')) echo wpdx_today_in_history('date'); ?> //这个是输出时间
<?php if(function_exists('wpdx_today_in_history')) echo wpdx_today_in_history('event'); ?> //这个是历史事件

其实还可以再综合一下,直接写成一个函数调用,同样添加到主题的 functions.php:

1
function wpdaxue_today_in_history(){ date_default_timezone_set('PRC'); $i=date('n',time()); $filename='today'.$i.'.xml'; $xml=simpleXML_load_file($filename); $todaytime="date".date("n\mj\d",time()); echo ' <div class="history-today"> <p class="history-date">'.$xml->$todaytime->date.'</p> <p class="history-event">'.$xml->$todaytime->event.'</p> </div> '; }

然后使用下面的代码,就可以直接输出日期和事件:

1
<?php if(function_exists('wpdaxue_today_in_history')) wpdaxue_today_in_history(); ?>