Ottenere la data/ora corrente in WordPress
Nel mio plugin, sto cercando di ottenere la data/ora corrente del blog nel codice ma sembra restituire una data/ora anomala. Se pubblico un nuovo articolo sul blog mostra la data/ora corretta, quindi non sono sicuro di quale sia il problema. Sto gestendo il codice in modo errato? (Ora del Post: Pubblicato il: 13 Feb, 2012 @ 22:45)
Codice PHP
<?
// Ottiene l'ora del post corrente
$t_time = get_the_time( __( 'Y/m/d g:i:s A' ) );
echo "<h1>ORA DEL BLOG</h1>";
echo $t_time . "<br>";
echo "<br>";
echo "<h1>ORA DEL SERVER</h1>";
echo date("Y/m/d g:i:s A");
?>
OUTPUT ORA DEL BLOG 2011/05/20 10:28:16 PM
ORA DEL SERVER 2012/02/14 5:41:35 AM

In WordPress esiste una funzione chiamata current_time();
alla quale puoi passare come parametro 'timestamp' o 'mysql' e restituirà un orario.
Per maggiori informazioni: https://developer.wordpress.org/reference/functions/current_time/

+1. Aggiungerei che WordPress imposta il fuso orario del server su UTC, motivo per cui dovresti usare le funzioni di WordPress (che tengono conto di questo) piuttosto che quelle native di PHP.

Da WordPress 5.3 current_time( 'timestamp' )
è non più consigliato. Se hai bisogno di ottenere un orario adeguato all'impostazione del fuso orario del sito, si consiglia di utilizzare le seguenti funzioni:
1. current_datetime()
2. time()
3. get_post_datetime()
4. get_post_timestamp()
Perché questo cambiamento?
Il componente Data/Ora si basava sul timestamp di WordPress (prima di WordPress 5.3), ciò causava molti bug e la mancanza di capacità di allinearsi con le versioni più recenti di PHP.
Informazioni dettagliate qui: https://make.wordpress.org/core/2019/09/23/date-time-improvements-wp-5-3/

Codice
Il codice corretto attuale (2020) per visualizzare una data e ora completa in forma localizzata è attraverso la nuova funzione del core di WordPress wp_date()
:
echo wp_date( get_option( 'date_format' ), get_post_timestamp() )
. wp_date( get_option( 'time_format' ), get_post_timestamp() );
Questo snippet di codice relativamente breve:
- rispetta le opzioni di formattazione richieste per data e ora dalle Impostazioni di WordPress
- effettua le appropriate traduzioni
- applica il fuso orario corretto dalle Impostazioni
- è considerata la pratica migliore nel 2021 e oltre.
Motivazione
Con il rilascio di wp_date()
in WordPress 5.3 (2019), WordPress ha fatto grandi passi avanti nel risolvere il modo confuso e problematico in cui il tempo funzionava all'interno di WordPress, in particolare il problema per cui i timestamp di WordPress non erano gli stessi dei timestamp Unix (ovvero il valore di time()) ma avevano l'offset del fuso orario aggiunto. La confusione derivava dal fatto che nel mondo Unix, l'output di time() (ovvero "timestamp Unix") era storicamente sempre in forma GMT, ed era aggravata dall'uso del termine "timestamp Unix" per descrivere questi "timestamp WordPress". La nuova funzione wp_date()
esegue la localizzazione che normalmente servirebbe e funziona correttamente con i valori di timestamp GMT forniti.
Nota che l'uso della funzione PHP date_default_timezone_set()
per impostare un fuso orario del sito (diverso da quello locale) causerà ancora problemi in WordPress, ma ora ci sono valide alternative che funzionano come ci si aspetterebbe. Vale la pena notare che l'uso di date_default_timezone_set()
viene ora rilevato in Site Health come 'critico' poiché interromperà la gestione del tempo in WordPress e in alcuni plugin; se lo usi in vecchi codici, dovresti rimuoverlo il prima possibile e sostituire l'uso di date()
con wp_date()
.
Documentazione
Un'introduzione più completa alle nuove funzioni di data e ora, scritta dal team che ha sviluppato il nuovo codice, è disponibile qui: https://make.wordpress.org/core/2019/09/23/date-time-improvements-wp-5-3/
Nota che alcune delle nuove funzioni restituiscono oggetti PHP DateTimeImmutable
che semplificano notevolmente la vita. Inoltre, tutte le funzioni elencate nell'introduzione linkata sono ora parte del core e quindi hanno pagine del manuale PHP core nei soliti posti.
Inoltre, includono note su cosa usare e cosa non usare (anche se al momento mancano esempi di codice).
