Hay algunas opciones, ninguna de las cuales realmente funciona muy bien. Este es un error de WordPress, y realmente apesta porque el tiempo es incorrecto a menos que configure su sitio en UTC ... lo cual es confuso y no siempre es posible.
Creo que el siguiente código solo funciona si eliges tu zona horaria (en Configuración -> General en admin) como una ciudad con nombre en lugar de un desplazamiento de número GMT. No he probado esto, pero es muy posible que get_option('gmt_offset')
esté configurado cuando get_option('timezone_string')
no lo está.
date_default_timezone_set(get_option('timezone_string'));
La desventaja de esto es que WordPress asume que PHP está configurado en UTC al hacer marcas de tiempo mysql, por lo que puede dañar su base de datos un poco cada vez que cambie de zona horaria. Sin mencionar que otros complementos de WP pueden suponer que el entorno PHP siempre está en UTC.
Entonces, si solo desea una hora correcta, puede forzar su marca de tiempo para que esté en UTC con:
get_post_time('c', true); //should work for non-post objects.
Desafortunadamente, aunque correcto, hará que la zona horaria se configure en UTC.
Y tenga en cuenta que no se puede tanto utilizar el "verdadero" de la bandera y la función timezone_set defecto.
Cualquier solución adecuada será un fragmento de código que tenga en cuenta ambos gmt_offset
AND timezone_string
y los use para establecer una zona horaria en alguna entrada. WP supone que PHP se configuró en UTC al hacer marcas de tiempo mysql, y podría romper otros complementos.
Hay una solución de este tipo en https://www.skyverge.com/blog/down-the-rabbit-hole-wordpress-and-timezones/ pero, nuevamente, esto es un ERROR, por lo que debe usar el get_post_time($date_format, TRUE)
código para obtener una marca de tiempo que es realmente correcto