Hay algunas opciones, ninguna de las cuales funciona realmente bien. Este es un error de WordPress, y realmente apesta porque el tiempo es incorrecto a menos que configure su sitio en UTC ... lo que es confuso y no siempre es posible.
Este siguiente código creo que solo funciona si elige su Zona horaria (en Configuración - > General en admin) como una ciudad con nombre en lugar de por un desplazamiento de número GMT. No he probado esto, pero es muy posible que get_option('gmt_offset')
se establezca 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 a UTC al crear marcas de tiempo de mysql, ¡así que puedes desordenar un poco tu base de datos cada vez que cambies las zonas horarias! Sin mencionar otros complementos de WP, se puede suponer que el entorno PHP siempre está en UTC.
Entonces, si solo quiere una hora correcta, puede forzar que su marca de tiempo esté en UTC con:
get_post_time('c', true); //should work for non-post objects.
Desafortunadamente, aunque es correcto, hará que la zona horaria se establezca en UTC.
Y tenga en cuenta que no puede ambos usar el indicador "verdadero" y la función predeterminada de zona horaria.
Cualquier solución adecuada será un fragmento de código que representa tanto gmt_offset
AND timezone_string
y los usa para establecer una zona horaria en alguna entrada. WP asume que PHP está configurado en UTC al realizar las marcas de tiempo de mysql, y podría romper otros complementos.
Hay una solución de este tipo en enlace pero, nuevamente, esto es un ERROR, por lo que debería usar el código get_post_time($date_format, TRUE)
para obtener una marca de tiempo que sea realmente correcta.