Dapatkah seseorang memberi tahu saya cara mendapatkan zona waktu yang diatur di Admin WordPress?
Misalnya, jika blog disetel ke waktu Timur, saya perlu string persis ini untuk mencetak:
AS / Timur
Ini untuk fungsi yang hidup di functions.php dalam tema saya.
Situasi yang tidak menguntungkan adalah bahwa memang ada dua opsi yang berbeda:
timezone_string
, yang menghemat zona waktu gaya PHP.gmt_offset
, yang menghemat offset float numerik dalam hitungan jam.Tetapi dalam lingkungan yang lebih baru
timezone_string
benar-benar menimpagmt_offset
, nilai yang dikembalikan oleh yang terakhir akan didasarkan pada yang pertama. Namun sebaliknya tidak benar -gmt_offset
mungkin valid, sementaratimezone_string
itu kosong.Saya telah menghabiskan sedikit waktu untuk hal-hal ini, dan langkah terbaru yang saya terapkan di
WpDateTime
perpustakaan saya adalah sebagai berikut:Ini akan mencoba untuk instantiate objek zona waktu yang berarti dalam semua kasus yang mungkin, selama ada informasi sama sekali.
sumber
(int)
untuk $ jam danfloor
untuk $ menit bermasalah? Menurut dokumentasi,(int)
danfloor
hampir sama kecuali(int)
akan membulatkan -4,5 ke -4 danfloor
akan membulatkannya menjadi -5. Ini sepertinya akan memberikan offset zona waktu negatif yang salah?Periksa halaman Referensi Pilihan . Opsi
gmt_offset
mengembalikan bilangan bulat. Misalnya, jika zona waktu diatur ke waktu Timur (mis. Amerika / New_York),gmt_offset
harus -5.sumber
Jangan berpikir Anda akan mendapatkan string seperti AS / Timur tanpa menyimpan semua string yang Anda inginkan dalam array dan merujuknya. Menggunakan PHP Anda bisa mendapatkan singkatan zona waktu, yaitu EST ; dan jika Anda memiliki nilai-nilai yang disimpan dalam array dengan string yang Anda inginkan, Anda bisa mencarinya.
sumber
Untuk menambahkan ke Bainternet (saya menambahkan ini sebagai jawaban karena saya tidak dapat berkomentar - Saya memiliki kurang dari 50 poin pada tumpukan WP Development).
WordPress hanya akan menyimpan string zona waktu jika Anda memilih string zona waktu di pengaturan umum. Pilihan UTF adalah tempat defaultnya dalam daftar, tetapi Anda dapat menggulir hingga string zona waktu. Jika Anda mengatur string zona waktu, string UTF dan zona waktu akan ditetapkan. Mereka akan sama (artinya, UTF akan diatur ulang ke zona baru saat Anda memilih zona waktu string zona waktu).
(WordPress 4)
sumber
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 kapanget_option('timezone_string')
tidak.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:
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
DANtimezone_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.sumber
Mengingat fakta bahwa wordpress menyimpan string zona waktu dalam tabel opsi, Anda dapat menggunakan cara berorientasi objek untuk mendapatkan waktu yang tepat di situs wordpress Anda:
sumber