Obține data/ora curentă în WordPress
În plugin-ul meu, încerc să obțin data/ora curentă a blogului în cod, dar pare să returneze o dată/oră ciudată. Dacă pun o postare nouă pe blog, aceasta arată data/ora corectă, așa că nu sunt sigur care este problema. Manipulez codul incorect? (Ora postării: Publicat la: 13 Feb, 2012 @ 22:45)
Cod PHP
<?
$t_time = get_the_time( __( 'Y/m/d g:i:s A' ) );
echo "<h1>ORA BLOG</h1>";
echo $t_time . "<br>";
echo "<br>";
echo "<h1>ORA SERVER</h1>";
echo date("Y/m/d g:i:s A");
?>
REZULTAT ORA BLOG 2011/05/20 10:28:16 PM
ORA SERVER 2012/02/14 5:41:35 AM

În WordPress există o funcție numită current_time();
căreia îi poți transmite fie 'timestamp', fie 'mysql' și va returna un timp.
Pentru mai multe informații: https://developer.wordpress.org/reference/functions/current_time/

+1. Aș adăuga că WordPress forțează fusul orar al serverului să fie UTC, motiv pentru care ar trebui să utilizați funcțiile WordPress (deoarece acestea iau în considerare acest aspect) în locul celor native din PHP.

Începând cu WordPress 5.3, funcția current_time( 'timestamp' )
este depreciată. Dacă aveți nevoie să obțineți un timp ajustat la setarea fusului orar al site-ului, se recomandă utilizarea următoarelor funcții:
1. current_datetime()
2. time()
3. get_post_datetime()
4. get_post_timestamp()
De ce această schimbare?
Componenta Data/Ora se baza pe timestamp-ul WordPress (înainte de WordPress 5.3), ceea ce a cauzat numeroase erori și lipsa de capacitate de a urmări standardele PHP.
Informații detaliate aici: https://make.wordpress.org/core/2019/09/23/date-time-improvements-wp-5-3/

Cod
Codul corect actual (2020) pentru afișarea unei date și ore complete în format localizat este prin noua funcție din nucleul WordPress wp_date()
:
echo wp_date( get_option( 'date_format' ), get_post_timestamp() )
. wp_date( get_option( 'time_format' ), get_post_timestamp() );
Acest fragment de cod relativ scurt:
- respectă opțiunile de formatare solicitate pentru dată și oră din Setările WordPress
- realizează traducerile adecvate
- aplică fusul orar corect din Setări
- este considerat cea mai bună practică în 2021 și în continuare.
Raționament
Cu lansarea wp_date()
în WordPress 5.3 (2019), WordPress a făcut un pas mare spre remedierea modului confuz și defectuos în care timpul funcționa în cadrul WordPress, mai precis problema în care timestamp-urile WordPress nu erau aceleași cu timestamp-urile Unix (adică valoarea time()), ci aveau adăugat offset-ul fusului orar. Confuzia a apărut deoarece în lumea Unix, rezultatul funcției time() (cunoscut sub numele de "timestamp Unix") a fost istoric întotdeauna în format GMT și a fost agravată de utilizarea termenului "timestamp Unix" pentru a descrie aceste "timestamp-uri WordPress". Noua funcție wp_date()
realizează localizarea de care ai nevoie în mod normal și funcționează corect cu valorile GMT ale timestamp-urilor furnizate.
Rețineți că utilizarea funcției PHP date_default_timezone_set()
pentru a seta un fus orar al site-ului (altul decât cel local) va încă strica WordPress, dar acum există alternative bune care funcționează așa cum te-ai aștepta. Este de menționat faptul că utilizarea funcției date_default_timezone_set()
este acum detectată în Sănătatea Site-ului ca 'critică', deoarece va strica gestionarea timpului în WordPress și în unele plugin-uri; dacă o utilizați în codul vechi, ar trebui să o eliminați cât mai curând posibil și să înlocuiți utilizarea funcției date()
cu wp_date()
.
Documentație
O prezentare mai completă a noilor funcții de dată și oră, scrisă de echipa care a dezvoltat noul cod, este disponibilă aici: https://make.wordpress.org/core/2019/09/23/date-time-improvements-wp-5-3/
Rețineți că unele dintre noile funcții returnează obiecte PHP DateTimeImmutable
, ceea ce face viața considerabil mai ușoară. În plus, toate funcțiile enumerate în introducerea legată sunt acum parte din nucleu și, prin urmare, au pagini de manual PHP în locurile obișnuite.
De asemenea, ele includ note despre ce să utilizați și ce să nu utilizați (deși în prezent, lipsesc exemplele de cod).
