środa, 10 sierpnia 2011

date() nieprawidłowy czas w WordPressie

W ramach pisania własnego pluginu musiałam się zmierzyć z problemem w środowisku WP, jak się okazało, niebanalnym.

date('Y-m-d H:i:s');

Powyższy kod powinien zwrócić datę, godzinę, minuty i sekundy zgodne z lokalnymi ustawieniami serwera na którym działa PHP. Ale nie zwraca. Zwraca czas Greenwich, czyli na tę chwilę 2 godziny wcześniej, niż powinno. Sprawdziłam locale, odpaliłam PHP z linii komand. Wszystko cacy. To czemu w WP ten czas jest niezgodny z lokalnym?? Ano, WP sobie nadpisuje ustawienia...

Jak to rozwiązać? Użyć funkcji current_time() dostarczanej przez WP. Funkcja ta z parametrem "timestamp" zwróci lokalny czas serwera, a nie GMT:

date('Y-m-d H:i:s', current_time('timestamp'));

I problem z głowy. I tylko nie rozumiem skąd poniższy tekst w dokumentacji WP:
WARNING: current_time('timestamp',1) returns (as a timestamp) the server time, not (as expected) GMT! Because this is exactly what PHP's time() returns, current_time('timestamp',1) is superfluous and unnecessary -- use time().

Dlaczego powinnam oczekiwać, że zostanie zwrócony czas GMT? Czy ja o czymś nie wiem? Wcale mi się nie podoba zmienianie działania natywnych funkcji PHP. A do poprawnego działania mojego pluginu potrzebuję aktualnego czasu serwera. I muszę sięgać prawą ręką do lewej kieszeni, żeby wyciągnąć prostą rzecz.

Brak komentarzy:

Prześlij komentarz