Czy ktoś może mi powiedzieć, jak uzyskać strefę czasową ustawioną w Administratorze WordPress?
Na przykład, jeśli blog jest ustawiony na czas wschodni, muszę wydrukować ten ciąg:
US / Eastern
To jest dla funkcji, która żyje w functions.php w moim motywie.
Niefortunna sytuacja polega na tym, że rzeczywiście istnieją dwie różne opcje:
timezone_string
, który oszczędza strefę czasową w stylu PHP.gmt_offset
, które zapisuje liczbowe przesunięcie pływaka w godzinach.Ale w nowszych środowiskach
timezone_string
faktycznie zastępujegmt_offset
, wartość zwracana przez te ostatnie będą oparte na tych pierwszych. Jednak przeciwieństwo nie jest prawdą -gmt_offset
może być poprawne, dopókitimezone_string
jest puste.Spędzam nad tym sporo czasu, a najbardziej aktualne podejście, które wdrożyłem w mojej
WpDateTime
bibliotece, jest następujące:Spróbuje utworzyć instancję znaczącego obiektu strefy czasowej we wszystkich możliwych przypadkach, o ile w ogóle będą dostępne jakiekolwiek informacje.
źródło
(int)
godzin $ ifloor
minut $ jest problematyczne? Zgodnie z dokumentacją(int)
ifloor
są prawie takie same, z wyjątkiem(int)
zaokrągli -4,5 do -4 ifloor
zaokrągli ją do -5. Wygląda na to, że spowoduje nieprawidłowe przesunięcie ujemnej strefy czasowej?Sprawdź stronę Informacje o opcjach . Opcja
gmt_offset
zwraca liczbę całkowitą. Na przykład, jeśli strefa czasowa jest ustawiona na czas wschodni (np. Ameryka / Nowy_Jork),gmt_offset
powinna wynosić -5.źródło
Nie myśl, że otrzymasz ciąg taki jak US / Eastern bez przechowywania wszystkich ciągów, które chcesz w tablicy i odwoływania się do nich. Za pomocą PHP można uzyskać skrót strefy czasowej, tj. EST ; a jeśli masz te wartości zapisane w tablicy z ciągami, które chcesz, możesz je wyszukać.
źródło
Aby dodać do Bainternet (dodaję to jako odpowiedź, ponieważ nie mogę komentować - mam mniej niż 50 punktów na stosie WP Development).
WordPress zapisze ciąg strefy czasowej tylko wtedy, gdy wybierzesz ciąg strefy czasowej w ustawieniach ogólnych. Wybór UTF jest domyślnym miejscem na liście, ale można przewijać w górę do ciągów strefy czasowej. Jeśli ustawisz ciąg strefy czasowej, zarówno UTF, jak i ciąg strefy czasowej zostaną ustawione. Będą takie same (co oznacza, że UTF zostanie zresetowany do nowej strefy po wybraniu strefy czasowej ciągu czasowego).
(WordPress 4)
źródło
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, gdyget_option('timezone_string')
nie jest.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ą:
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
Itimezone_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.źródło
Biorąc pod uwagę fakt, że wordpress utrzymuje ciąg strefy czasowej w tabeli opcji, możesz użyć zorientowanego obiektowo sposobu uzyskania odpowiedniego czasu na swojej stronie wordpress:
źródło