Sử dụng thuần thục Date Time trong WordPress Coding

Nếu bạn code theme WordPress từ đầu có thể sẽ làm việc khá nhiều với ngày giờ, chuyển đổi ngày giờ hoặc format cho đúng định dạng, trong bài viết này hãy cùng Vũ Trụ Số tìm hiểu về Date và Time trong WordPress và cách sử dụng chúng một cách linh hoạt nhất dựa vào yêu cầu code từ phía khách hàng.

Sử dụng data time trong WordPress

Một cách đơn giản nhất để lấy ngày xuất bản bài viết đó là bạn chỉ cần sử dụng hàm the_date() hoặc get_the_date()

the_date();
echo get_the_date();

Đầu ra sẽ được hiển thị mặc định như sau:

February 17, 2023

Mẹo: Thường đầu ra sẽ được “Khử trùng” để đảm bảo bảo mật bằng cách dùng hàm esc_html

echo esc_html(get_the_date());

Bạn có thể thấy nếu đầu ra mặc định như trên sẽ không phù hợp với Việt Nam cho nên sẽ có các tùy chọn để hiển thị sao cho linh hoạt hoạt, cụ thể bạn có thể sử dụng hàm get_the_date() với các tham số được thêm vào để cho đầu ra sao cho phù hợp.

Ví dụ: Lấy ngày theo định dạng 17/02/2023 bạn sẽ viết như sau

echo get_the_date('d-m-Y');

Hoặc nếu bạn muốn thêm giờ xuất bản theo định dạng: 17/02/2023 10:33:45 am

echo get_the_date("d-m-Y h:i:s a");

Chắc chắn sẽ có nhiều bạn thắc mắc tùm lum chữ như d, m, Y h:i:s a sẽ có ý nghĩa ra sao và còn có thêm chữ cái nào nữa không thì xin thưa là có, nó định dạng theo cấu trúc như sau

YearY2023
MonthM
m
F
Jan – Dec
01 – 12
January – December
DayD
d
Mon – Sun
01 – 31
HourH
h
A
00 – 23
01 – 12
AM or PM
Minutei01 – 59
Seconds01 – 59
TimestampUAmount of seconds from Jan 1970

Để dễ hiểu bạn cũng có thể xem ở phần cài đặt của WordPress sẽ hiển chúng hiển thị ra sao

Lấy ngày giờ xuất bản bài viết

Để lấy ngày giờ xuất bản bài viết với ID bài viết bạn cần thêm id vào như sau:

global $post;	
echo get_the_time('d-m-Y', $post->ID);

Với các tham số ở trên bạn có thể thêm vào để có đầu ra phù hợp nhé.

Thường mình sẽ sử dụng hàm get_the_time() thay vì the_time() vì hàm the_time() không hỗ trợ ID bài đăng

Hiển thị thời gian sửa đổi bài viết

Một số trang web cập nhật bài viết của họ thường xuyên. Việc hiển thị thời điểm mỗi bài đăng được cập nhật khá hữu ích. Nếu bạn muốn hiển thị lần cập nhật cuối cùng và ngày sửa đổi của bài đăng, bạn có thể sử dụng code sau.

echo get_the_modified_time('d-m-Y', $post->ID);

Đầu ra: 17/02/2023

Thời gian cách đây x tháng

Trong WordPress có 1 hàm để bạn lấy thời gian được tính toán cách ngày xuất bản bao nhiều giờ hoặc ngày đó là hàm: human_time_diff

echo human_time_diff( get_the_time( 'U' ), current_time( 'timestamp' ) );

Hàm human_time_diff() thường được viết lại như sau để phù hợp với tiếng Việt

function vutruso_time_ago() {
return sprintf( esc_html__( '%s trước', 'vutruso' ), human_time_diff(get_the_time ( 'U' ), current_time( 'timestamp' ) ) );
}
add_filter( 'the_time', 'vutruso_time_ago' );

Giờ nếu cần lấy thời gian xuất bản bài viết bạn chỉ cần sử dụng hàm vutruso_time_ago() là xong.

Đầu ra sẽ là: 1 giờ trước hoặc 1 tháng trước hoặc 2 tháng trước hoặc 1 năm trước … (nó tính từ thời gian xuất bản tới thời gian hiện tại)

PHP DateTime Object

Thời gian hiện tại

$current_date = current_datetime();
echo $current_date->format( 'd/m/Y' );
// if you want to use the format from Settings:
echo $current_date->format( get_option('date_format') );

Convert form String

$meta_date = '13/01/2023';
$datetime = DateTime::createFromFormat( 'd/m/Y', $meta_date );
echo $datetime->format( 'd M Y' ); // 13 Jan 2023

Convert form special String

Thời gian Published của bài viết và comment được lưu với định dạng nếu Y-m-d H:i:s . Nếu String đang ở định dạng đó, bạn có thể sử dụng cách sau để format lại

$post_date = '2023-01-16 12:00:00';
$datetime = new DateTime( $post_date );

echo $datetime->format( 'd M Y' ); // 16 Jan 2023

Lời kết

Hy vọng bài viết này sẽ giúp được các bạn mới code theme hoặc plugin liên quan đến thời gian trong WordPress.

Chúc thành công!

daotiendung

Tiến Dũng Đào chuyên quản lý, vận hành các dịch vụ website. Anh có nhiều năm kinh nghiệm về VPS, Hosting, technical SEO, CMS. Đặc biệt yêu thích WordPress với hơn 5 năm phát triển theme và plugin. Sở thích của anh là đọc, viết blog, đi du lịch, tập võ và chia sẻ các kiến thức cho mọi người.

Bài viết liên quan