¿Alguien puede decirme cómo obtener la zona horaria establecida en el Administrador de WordPress?
Por ejemplo, si el blog está configurado a la hora del Este, necesito esta cadena exacta para imprimir:
EE. UU. / Este
Esto es para una función que vive en functions.php en mi tema.
La situación desafortunada es que, de hecho, hay dos opciones diferentes:
timezone_string
, que guarda la zona horaria de estilo PHP.gmt_offset
, lo que ahorra el desplazamiento numérico flotante en horas.Pero en los entornos más nuevos, en
timezone_string
realidad , se anulagmt_offset
, el valor devuelto por este último se basará en el primero. Sin embargo, lo contrario no es cierto:gmt_offset
puede ser válido mientrastimezone_string
esté vacío.He dedicado bastante tiempo a estas cosas, y la versión más actual que implementé en mi
WpDateTime
biblioteca es la siguiente:Esto intentará crear una instancia de un objeto de zona horaria significativo en todos los casos posibles, siempre que haya alguna información disponible.
fuente
(int)
$ horas yfloor
$ minutos? De acuerdo con la documentación,(int)
yfloor
son casi lo mismo, excepto(int)
que redondeará -4.5 a -4 yfloor
lo redondeará a -5. Esto parece que dará compensaciones de zona horaria negativas incorrectas.Consulte la página de referencia de opciones . La opción
gmt_offset
devuelve un entero. Por ejemplo, si la zona horaria está configurada para la hora del Este (por ejemplo, América / Nueva York),gmt_offset
debería ser -5.fuente
No piense que obtendrá una cadena como US / Eastern sin almacenar todas las cadenas que desee en una matriz y hacer referencia a ellas. Usando PHP puede obtener la abreviatura de zona horaria, es decir EST ; y si tiene esos valores almacenados en una matriz con las cadenas que desea, puede buscarlos.
fuente
Para agregar a Bainternet (estoy agregando esto como respuesta porque no puedo comentar, tengo menos de 50 puntos en la pila de desarrollo de WP).
WordPress solo almacenará una cadena de zona horaria si selecciona una cadena de zona horaria en la configuración general. La selección de UTF es donde está predeterminada en la lista, pero puede desplazarse hasta las cadenas de zona horaria. Si configura una cadena de zona horaria, se establecerán tanto la cadena UTF como la cadena de zona horaria. Serán lo mismo (es decir, el UTF se restablece a la nueva zona cuando selecciona una zona horaria de cadena de zona horaria).
(WordPress 4)
fuente
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 cuandoget_option('timezone_string')
no lo está.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:
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
ANDtimezone_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 correctofuente
Dado el hecho de que WordPress mantiene la cadena de zona horaria en la tabla de opciones, puede utilizar la forma orientada a objetos para obtener el momento adecuado en su sitio de WordPress:
fuente