Ada beberapa opsi, tidak ada yang benar-benar berfungsi dengan baik. Ini adalah bug WordPress, dan itu benar-benar menyebalkan karena waktunya salah kecuali Anda mengatur situs Anda ke UTC ... yang membingungkan dan bahkan tidak selalu mungkin.
Kode berikut ini saya pikir hanya berfungsi jika Anda memilih Zona Waktu Anda (Di Bawah Pengaturan -> Umum di admin) sebagai kota bernama alih-alih dengan offset nomor GMT. Saya belum menguji ini tetapi sangat mungkin yang get_option('gmt_offset')
diatur kapan get_option('timezone_string')
tidak.
date_default_timezone_set(get_option('timezone_string'));
Kelemahan dari ini adalah bahwa WordPress menganggap PHP diatur ke UTC saat membuat stempel waktu mysql, sehingga Anda dapat mengacaukan database Anda sedikit setiap kali Anda beralih zona waktu! Belum lagi plugin WP lain mungkin berasumsi bahwa lingkungan PHP selalu dalam UTC.
Jadi, jika Anda hanya ingin waktu yang tepat - Anda dapat memaksa cap waktu Anda berada di UTC dengan:
get_post_time('c', true); //should work for non-post objects.
Sayangnya, meskipun benar, itu akan membuat zona waktu diatur ke UTC.
Dan catatan bahwa Anda tidak dapat baik menggunakan "benar" bendera dan fungsi standar timezone_set.
Setiap solusi yang tepat akan menjadi potongan kode yang menyumbang untuk gmt_offset
DAN timezone_string
dan menggunakannya untuk menetapkan zona waktu pada beberapa input. WP mengasumsikan bahwa PHP disetel ke UTC saat melakukan cap waktu mysql, dan itu mungkin merusak plugin lain.
Ada satu solusi seperti itu di https://www.skyverge.com/blog/down-the-rabbit-hole-wordpress-and-timezones/ tetapi, sekali lagi ini adalah BUG, jadi Anda harus menggunakan get_post_time($date_format, TRUE)
kode untuk mendapatkan stempel waktu yang sebenarnya benar.