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

Cập nhật lần cuối vào

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

Theo dõi
Thông báo của
guest

4 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
Minh Nhựt
9 năm trước

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!

thuan
thuan
9 năm trước

Em lam theo cách cua anh khi vua post bai thi no tính được 7 giờ trước.em muốn tinh theo gio vietnam thi lam cách nào