Bài viết này giới thiệu về các cách hiển thị thời gian đăng bài viết trong WordPress, gồm các định dạng cơ bản và thời gian tính từ thời điểm hiện tại, ví dụ “1 ngày trước”.

Hiển thị thời gian đăng bài viết trong WordPress

Thời gian theo định dạng cơ bản

Trong WordPress, các bạn sử dụng hàm the_time() để xuất thời gian đăng bài viết, ví dụ.

<?php the_time('d/m/Y'); ?>

Đoạn này sẽ cho ra kết quả như sau.

10/05/2017

Các định dạng ngày tháng các bạn có thể tham khảo tại đây.

Thời gian tính từ thời điểm hiện tại

Ví dụ: 2 phút trước. Để làm được điều này, bạn thêm hàm sau vào functions.php.

/**
 * Determines the difference between two timestamps
 */
function vi_human_time_diff($from, $to = '') {
    if (empty($to))
        $to = time();
    $diff = (int) abs($to - $from);
    if ($diff > 259200)
        return false;
    if ($diff < HOUR_IN_SECONDS) {
        $mins = round($diff / MINUTE_IN_SECONDS);
        if ($mins <= 1)
            $mins = 1;
        /* translators: min=minute */
        $since = sprintf(_n('%s phút', '%s phút', $mins), $mins);
    } elseif ($diff < DAY_IN_SECONDS && $diff >= HOUR_IN_SECONDS) {
        $hours = round($diff / HOUR_IN_SECONDS);
        if ($hours <= 1)
            $hours = 1;
        $since = sprintf(_n('%s giờ', '%s giờ', $hours), $hours);
    } elseif ($diff < WEEK_IN_SECONDS && $diff >= DAY_IN_SECONDS) {
        $days = round($diff / DAY_IN_SECONDS);
        if ($days <= 1)
            $days = 1;
        $since = sprintf(_n('%s ngày', '%s ngày', $days), $days);
    } elseif ($diff < 30 * DAY_IN_SECONDS && $diff >= WEEK_IN_SECONDS) {
        $weeks = round($diff / WEEK_IN_SECONDS);
        if ($weeks <= 1)
            $weeks = 1;
        $since = sprintf(_n('%s tuần', '%s tuần', $weeks), $weeks);
    } elseif ($diff < YEAR_IN_SECONDS && $diff >= 30 * DAY_IN_SECONDS) {
        $months = round($diff / (30 * DAY_IN_SECONDS));
        if ($months <= 1) $months = 1; $since = sprintf(_n('%s tháng', '%s tháng', $months), $months); } elseif ($diff >= YEAR_IN_SECONDS) {
        $years = round($diff / YEAR_IN_SECONDS);
        if ($years <= 1)
            $years = 1;
        $since = sprintf(_n('%s năm', '%s năm', $years), $years);
    }
    return $since;
}

Lưu ý: Câu lệnh if sau:

if ($diff > 259200)
    return false;

Số 259200 nghĩa là số giây của 3 ngày, tức là hàm này chỉ tính thời gian trong 3 ngày gần nhất, bạn có thể bỏ câu lệnh này nếu không muốn giới hạn hoặc thay đổi thông số tùy ý.

Sử dụng

Để xuất thời gian trong WordPress, bạn dùng lệnh như sau.

<?php
    $timeago = vi_human_time_diff(get_the_time('U'), current_time('timestamp'));
    if ($timeago == false) {
        the_time('d/m/Y');
    } else {
        echo $timeago . ' trước';
    }
?>

Chúc các bạn thành công!