Istnieje kilka opcji, z których żadna naprawdę nie działa świetnie. Jest to błąd WordPress i naprawdę jest do bani, ponieważ czas jest zły, chyba że ustawisz witrynę na UTC ... co jest mylące i nie zawsze możliwe.
Myślę, że ten następny kod działa tylko wtedy, gdy wybierzesz swoją Strefę Czasową (w Ustawieniach -> Ogólne w admin) jako nazwane miasto zamiast przesunięcia numeru GMT. Nie testowałem tego, ale jest bardzo możliwe, że get_option('gmt_offset')
jest ustawiony, gdy get_option('timezone_string')
nie jest.
date_default_timezone_set(get_option('timezone_string'));
Minusem tego jest to, że WordPress zakłada, że PHP jest ustawione na UTC podczas tworzenia znaczników czasu mysql, dzięki czemu możesz trochę popsuć bazę danych za każdym razem, gdy zmieniasz strefy czasowe! Nie wspominając już o innych wtyczkach WP, które mogą zakładać, że środowisko PHP jest zawsze w UTC.
Jeśli więc chcesz tylko mieć właściwy czas - możesz zmusić swój znacznik czasu do wyświetlania w UTC za pomocą:
get_post_time('c', true); //should work for non-post objects.
Niestety, choć poprawne, strefa czasowa zostanie ustawiona na UTC.
I pamiętaj, że nie można używać zarówno flagi „true”, jak i domyślnej funkcji timezone_set.
Wszelkie właściwe rozwiązanie to będzie fragment kodu, który stanowi zarówno gmt_offset
I timezone_string
i wykorzystuje je, aby ustawić strefę czasową na pewnym wejścia. WP zakłada, że PHP ustawia UTC podczas wykonywania znaczników czasu mysql, i może uszkodzić inne wtyczki.
Jest takie rozwiązanie na https://www.skyverge.com/blog/down-the-rabbit-hole-wordpress-and-timezones/, ale znowu jest to BŁĄD, więc powinieneś użyć get_post_time($date_format, TRUE)
kodu, aby uzyskać znacznik czasu, który jest właściwie poprawny.