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 Ngôi Nhà Web 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.
Đầu ra sẽ được hiển thị mặc định như sau:
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
Hoặc nếu bạn muốn thêm giờ xuất bản theo định dạng:
Chắc chắn sẽ có nhiều bạn thắc mắc tùm lum chữ như
Để 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
Với các tham số ở trên bạn có thể thêm vào để có đầu ra phù hợp nhé.
Đầu ra: 17/02/2023
Hàm
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
Convert form String
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
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()
1 2 |
the_date(); echo get_the_date(); |
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
1 |
echo esc_html(get_the_date()); |
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
1 |
echo get_the_date('d-m-Y'); |
17/02/2023 10:33:45 am
1 |
echo get_the_date("d-m-Y h:i:s a"); |
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
Year | Y |
2023 |
Month | M
m
F |
Jan – Dec 01 – 12 January – December |
Day | D
d |
Mon – Sun 01 – 31 |
Hour | H
h
A |
00 – 23 01 – 12 AM or PM |
Minute | i |
01 – 59 |
Second | s |
01 – 59 |
Timestamp | U |
Amount of seconds from Jan 1970 |
I. 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:
1 2 |
global $post; echo get_the_time('d-m-Y', $post->ID); |
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
II. 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.
1 |
echo get_the_modified_time('d-m-Y', $post->ID); |
III. 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
1 |
echo human_time_diff( get_the_time( 'U' ), current_time( 'timestamp' ) ); |
human_time_diff()
thường được viết lại như sau để phù hợp với tiếng Việt
1 2 3 4 |
function ngoinhaweb_time_ago() { return sprintf( esc_html__( '%s trước', 'ngoinhaweb' ), human_time_diff(get_the_time ( 'U' ), current_time( 'timestamp' ) ) ); } add_filter( 'the_time', 'ngoinhaweb_time_ago' ); |
ngoinhaweb_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)
IV. PHP DateTime Object
Thời gian hiện tại
1 2 3 4 |
$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') ); |
1 2 3 |
$meta_date = '13/01/2023'; $datetime = DateTime::createFromFormat( 'd/m/Y', $meta_date ); echo $datetime->format( 'd M Y' ); // 13 Jan 2023 |
1 2 3 4 |
$post_date = '2023-01-16 12:00:00'; $datetime = new DateTime( $post_date ); echo $datetime->format( 'd M Y' ); // 16 Jan 2023 |