本功能是展示站内历史上的今天发布的文章,而不是之前历史上发生的大事。所以想正常使用本功能,首先需要的是你站点运行超过1年了,如果还不到一年,那自然不会有什么历史上的今天了。

这个功能并不是我原创,之前看到别人使用过,google了一下,发现代码都是很久以前的了,还是直接写sql语句那种。本文是对这个功能进行了翻新。使用wordpress自带的  date_query 来实现。

实现方法

下面的代码加入到  functions.php 中

function fa_today_in_histroy(){
    $today = getdate();
    $args = array(
        'date_query' => array(
            array(
                'year'      => $today['year'],
                'compare'   => '!=',
            ),
            array(
                'month' => $today['mon'],
                'day'   => $today['mday'],
            ),
        ),
    );
    $postlist = get_posts($args);
    $html = '<h3 class="tih-title">历史上的今天</h3><ul class="tih-title-list">';
    if(!empty($postlist)){
        foreach ($postlist as $key => $post) {
            $html .= '<li class="tih-title-item"><a href="' . get_permalink($post->ID) . '" title="' . $post->post_title . '">' . $post->post_title . '</a></li>';
        }
        $html .= '</ul>';
        return $html;
    }
}

注意,在这个循环中是不能直接调用各种wp文章函数的,如需使用wp文章函数,则需要使用  setup_postdata() 和  wp_reset_postdata()

调用方法

如果是添加到文章末尾,可直接使用如下钩子,直接添加到  functions.php 中即可

function add_today_in_histroy($content){
    global $post;
    return $content . today_in_histroy();
}
add_filter('the_content','add_today_in_histroy');

如果是自定义位置,则使用

<?php echo today_in_histroy(); ?>

本文就不提供CSS样式了,如需html样式,可根据html结构进行定制,我已经添加了相应class。