Wordpress - 保留原始博客发布日期,但添加第二个上次更新日期

时间:2015-12-31 16:19:24

标签: php wordpress multisite

我使用此代码段添加最近更新的帖子,如果已更新:

add_filter('the_title' , 'add_update_status');
function add_update_status($html) {
    //First checks if we are in the loop and we are not displaying a page
    if ( ! in_the_loop() || is_page() )
        return $html;


//Instantiates the different date objects
$created = new DateTime( get_the_date('Y-m-d g:i:s') );
$updated = new DateTime( get_the_modified_date('Y-m-d g:i:s') );
$current = new DateTime( date('Y-m-d g:i:s') );

//Creates the date_diff objects from dates
$created_to_updated = date_diff($created , $updated);
$updated_to_today = date_diff($updated, $current);

//Checks if the post has been updated since its creation
$has_been_updated = ( $created_to_updated -> s > 0 || $created_to_updated -> i > 0 ) ? true : false;

//Checks if the last update is less than n days old. (replace n by your own value)
$has_recent_update = ( $has_been_updated && $updated_to_today -> days < 7 ) ? true : false;

//Adds HTML after the title
$recent_update = $has_recent_update ? '<span class="label label-warning">Recently updated</span>' : '';


    //Returns the modified title
    return $html.'&nbsp;'.$recent_update;
}

我希望我的帖子显示以下内容: 发布于2012年10月8日上午9:07,最后更新于2013年11月6日上午11:03

我们如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

创建和更新新帖子时,请使用WordPress的这些操作挂钩。在创建新帖子时,使用插入钩子,在更新帖子时,使用WordPress的保存钩子。

创建一个post meta,用于存储发布时间和发布后更新时间,如下所示。

//添加或更新新帖子时

add_action( 'save_post', 'my_save_post');
function my_save_post($post_id){

    if(empty(get_post_meta($post_id, 'created_on', true))) {
        update_post_meta($post_id, 'created_on', date('Y-m-d h:i:s'));    
    }

    update_post_meta($post_id, 'updated_on', date('Y-m-d h:i:s'));

}

现在,当您需要将此创建和更新时间显示为主题时,请使用以下所示的这些功能:

显示创建时间

get_post_meta($post_id, 'created_on', true);

显示更新时间

get_post_meta($post_id, 'updated_on', true);

答案 1 :(得分:0)

您可以将其添加到帖子模板中:

Published on <?php echo get_the_date('F j, Y'); ?> at <?php the_time('g:i a'); ?>, Last modified on <?php the_modified_date('F j, Y'); ?> at <?php the_modified_date('g:i a'); ?>