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(); ?>

Gửi bình luận của bạn 4 bình luận

Gửi bình luận

Địa chỉ email của bạn sẽ được giữ bí mật. Những mục bắt buộc được đánh dấu *