Hàm tính thời gian đăng bài viết

Trong khi viết giao diện cho WordPress, bạn thường sử dụng các hàm để hiển thị ngày đăng bài viết cũng như thời gian gửi bình luận. Nếu bạn mong muốn hiển thị thời gian theo kiểu Facebook thì bạn có thể sử dụng hàm bên dưới.

function sw_human_time_diff() {
    global $post;
    $date = get_post_time('G', true, $post);
    $langs = array('giây', 'phút', 'giờ', 'ngày', 'tuần', 'tháng', 'năm');
    $chunks = array(
        array( 60 * 60 * 24 * 365 , __( $langs[6], 'swhtd' ), __( $langs[6], 'swhtd' ) ),
        array( 60 * 60 * 24 * 30 , __( $langs[5], 'swhtd' ), __( $langs[5], 'swhtd' ) ),
        array( 60 * 60 * 24 * 7, __( $langs[4], 'swhtd' ), __( $langs[4], 'swhtd' ) ),
        array( 60 * 60 * 24 , __( $langs[3], 'swhtd' ), __( $langs[3], 'swhtd' ) ),
        array( 60 * 60 , __( $langs[2], 'swhtd' ), __( $langs[2], 'swhtd' ) ),
        array( 60 , __( $langs[1], 'swhtd' ), __( $langs[1], 'swhtd' ) ),
        array( 1, __( $langs[0], 'swhtd' ), __( $langs[0], 'swhtd' ) )
    );
    if ( !is_numeric( $date ) ) {
        $time_chunks = explode( ':', str_replace( ' ', ':', $date ) );
        $date_chunks = explode( '-', str_replace( ' ', '-', $date ) );
        $date = gmmktime( (int)$time_chunks[1], (int)$time_chunks[2], (int)$time_chunks[3], (int)$date_chunks[1], (int)$date_chunks[2], (int)$date_chunks[0] );
    }
    $current_time = current_time( 'mysql', $gmt );
    $newer_date = ( !$newer_date ) ? strtotime( $current_time ) : $newer_date;
    $since = $newer_date - $date;
    if ( 0 > $since )
        return __( 'Gần đây', 'swhtd' );
    for ( $i = 0, $j = count($chunks); $i < $j; $i++) {
        $seconds = $chunks[$i][0];
        if ( ( $count = floor($since / $seconds) ) != 0 )
            break;
    }
    $output = ( 1 == $count ) ? '1 '. $chunks[$i][1] : $count . ' ' . $chunks[$i][2];
    if ( !(int)trim($output) ){
        $output = '0 ' . __( $langs[0], 'swhtd' );
    }
    $output .= __(' trước', 'swhtd');
    return $output;
}

Đoạn code trên sẽ giúp bạn hiển thị thời gian theo kiểu: 2 giây trước, 2 ngày trước hoặc 1 năm trước. Bạn chỉ cần thay thế các hàm hiển thị thời gian của WordPress trong giao diện thành:

<?php sw_human_time_diff(); ?>

4 bình luận cho “Hàm tính thời gian đăng bài viết

  1. Giao diện cũ của Minh Nhựt cũng có dùng chức năng hiện thời gian đăng bài dạng “… phút trước”. Thực ra thì trong WordPress đã có sẵn hàm tương tự rồi đó bác Sáu!

    1. Thì trong WordPress đã có hàm human time diff rồi nhưng mà cái này là để bổ sung, hơn nữa sẽ giúp các bạn dùng trên những trang web không cài WordPress, lấy ý tưởng và thay đổi lại một chút là có thể dùng được.

Trả lời skylarkcob Hủy

Thư điện tử của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *