No puedo establecer el año por debajo de 1899 para una publicación. Si configuro el año por debajo de 1899, se establece automáticamente en el año actual.
Compré el tema de la línea de tiempo y pregunté en su foro de soporte. Ellos respondieron:
Esto suena como una limitación creada por su proveedor de alojamiento. No hay nada en el tema que impida la fecha que asigna: como puede ver, la demostración tiene publicaciones que usan fechas en la década de 1400. Intente ponerse en contacto con su proveedor de alojamiento y vea si tienen alguna idea sobre cómo abordar eso.
date
date-time
post-editor
Espartanos
fuente
fuente
WP_DEBUG
y edite un mensaje de error en su pregunta. Podría haberlo hecho parecer así, pero un enlace a una versión funcional del tema en cuestión tampoco ayuda mucho.Respuestas:
Esto no es realmente una respuesta, solo un intento de encontrar el contexto específico para este problema. Instale el siguiente complemento en su sitio, intente establecer las tres fechas y agregue su resultado al segundo
<pre>
en la tabla a continuación.Gist of the Plugin se puede consultar aquí .
0999
, haga clic en Actualizar . ¿Se guarda o cambia a la fecha actual?1899
,2020
y2039
.fuente
Pregunta y expectativas
Si bien la forma literal de esta pregunta es práctica en su contexto (año 1899), es un poco vaga en sentido teórico. ¿Qué edad tiene edad? ¿Qué tan lejos en el pasado podríamos querer llegar? ¿Qué pasa con el futuro?
Desde que WordPress comenzó como motor de blogs, en ese sentido contextual evolucionó para manejar el siguiente período de tiempo:
A medida que el uso de WordPress evolucionó hacia aplicaciones que no son de blogs, tales proyectos (comúnmente historia y arte, como he visto en los informes) comenzaron a atacar varios problemas con fechas fuera de este lapso.
A los fines de mi investigación, formulé las siguientes preguntas:
Limitaciones de la plataforma
Dado que WordPress es una aplicación PHP y usa MySQL para el almacenamiento de datos, está sujeto a sus limitaciones.
MySQL
WordPress almacena las fechas de publicación en una
post_date
columna deDATETIME
tipo en MySQL.Según la documentación, este tipo admite los años 1000 a 9999 :
Sin embargo, también dice que los valores anteriores podrían funcionar, sin mencionar los valores posteriores:
Si bien empíricamente he observado valores fuera de rango, esto es anecdótico y cae fuera de nuestra condición de confiabilidad.
PHP
En la programación PHP, la representación de fecha y hora de Unix es ampliamente utilizada. De acuerdo con la documentación para nuestros fines (PHP 5.2+ y entorno genérico de 32 bits) es compatible con años (en su totalidad) 1902 a 2037 :
Además de ese
Date/Time
manejo basado más nuevo, es de 64 bits y tiene un rango de aproximadamente -292 mil millones a 292 mil millones de años , lo que probablemente excede las necesidades de la humanidad en este momento.Limitaciones de WordPress
WordPress presenta y hereda algunas limitaciones adicionales en su base de código.
Flujo de datos
Desde el punto de vista del flujo de trabajo básico del usuario, hay dos procesados relacionados con la fecha:
Tenga en cuenta que estos son procesos técnicamente completamente diferentes e independientes. Como se explicó más adelante, sus rangos no se superponen y guardar la fecha correcta no equivale a la capacidad de leerlo correctamente en el entorno de WordPress.
Límites explícitos
_wp_translate_postdata()
procesa el año (presentado como un número distinto del formulario) y:wp_checkdate()
, que llama PHP nativocheckdate()
, que impone un límite de 1 a 32767Límites implícitos
strtotime()
La función PHP se usa varias veces y está sujeta a la marca de tiempo Unix mencionada anteriormente, en el nivel más bajomysql2date()
que afecta a todas las lecturas de fechas de la base de datos, rango heredado de 1902 a 2037get_gmt_from_date()
, que espera que el año sea([0-9]{1,4})
, limitando de 1 a 9999 , una fuerte posibilidad de procesamiento similar en otras funciones que requerirán una auditoría de código más exhaustiva para enumerarsePosibilidad de soluciones alternativas
wp_checkdate()
tienewp_checkdate
filtro, que permite anular esta verificación de validacióndate_i18n()
y tienedate_i18n
filtro, teóricamente permite interceptar y reprocesar completamente la salida de fechas para la interfaz, sin embargo, es un desafío si la función ya se pasa fuera de rango (false
) entrada de marca de tiempoConclusiones
A efectos prácticos y de portabilidad de datos, el intervalo de fechas de publicación de WordPress parece ser igual al de la marca de tiempo Unix de 32 bits y consta de los años 1902 a 2037 inclusive .
Para cualquier operación posterior a la fecha, se debe auditar el entorno fuera de este rango (rango de 64 bits de marcas de tiempo Unix, MySQL que funciona de facto o almacenamiento de base de datos alternativo para los valores). Para rangos más lejanos ( por debajo de 1000, por encima de 9999 ) es probable que se requieran cantidades considerables de código personalizado.
Para cualquier implementación de fechas arbitrarias tiene sentido:
Date/Time
código completamente personalizado y / o funciones de WordPress auditadas para no verse afectadas por los límites de marca de tiempo de UnixCódigo de prueba de cama
El siguiente código y el conjunto de años seleccionados a mano se han utilizado para la investigación anterior y la prueba de conclusiones:
fuente
r()
?