Je ne peux pas définir l'année en dessous de 1899 pour un poste. Si je règle l'année en dessous de 1899, elle est automatiquement définie sur l'année en cours.
J'ai acheté le thème Timeline et demandé dans leur forum de support. Ils ont répondu:
Cela ressemble à une limitation créée par votre hébergeur. Rien dans le thème n'empêche la date que vous attribuez - comme vous pouvez le voir, la démo a des publications utilisant des dates dans les années 1400. Essayez de contacter votre hébergeur et voyez s'il a des informations sur la façon de résoudre ce problème.
date
date-time
post-editor
Spartiates
la source
la source
WP_DEBUG
et modifiez un message d'erreur dans votre question. J'aurais pu le faire croire, mais un lien vers une version de travail du thème en question n'est vraiment pas très utile non plus.Réponses:
Ce n'est pas vraiment une réponse, juste une tentative de trouver le contexte spécifique de ce problème. Veuillez installer le plugin suivant sur votre site, essayez de définir les trois dates et ajoutez votre résultat à la seconde
<pre>
dans le tableau ci-dessous.L'essentiel du plugin peut être vérifié ici .
0999
, cliquez sur Mettre à jour . Est-il enregistré ou modifié à la date actuelle?1899
,2020
et2039
.la source
Question et attentes
Bien que la forme littérale de cette question soit pratique dans son contexte (année 1899), elle est un peu vague au sens théorique. Quel âge a vieux? Jusqu'où peut-on vouloir aller dans le passé ? Qu'en est-il du futur?
Depuis que WordPress avait commencé comme moteur de blog, dans ce sens contextuel , il a évolué pour gérer la période de temps suivante:
Au fur et à mesure que l'utilisation de WordPress a évolué vers des applications non liées aux blogs, ces projets (généralement l'histoire et l'art comme je l'ai vu dans les rapports) ont commencé à rencontrer des problèmes divers avec des dates en dehors de cette période.
Aux fins de mes recherches, j'avais formulé les questions suivantes:
Limitations de la plateforme
Étant donné que WordPress est une application PHP et utilise MySQL pour le stockage de données, il est soumis à leurs limites.
MySQL
WordPress stocke les dates de publication dans une
post_date
colonne deDATETIME
type dans MySQL.Selon la documentation, ce type prend en charge les années 1000 à 9999 :
Cependant, il indique également que des valeurs antérieures peuvent fonctionner, aucune mention de valeurs ultérieures:
Bien qu'empiriquement, j'ai observé des valeurs hors plage de travail, cela est anecdotique et tombe hors de notre condition de fiabilité.
PHP
En programmation PHP, la représentation d'horodatage Unix de la date est largement utilisée. Selon la documentation à nos fins (PHP 5.2+ et environnement générique 32 bits), il prend en charge les années (en entier) 1902 à 2037 :
En dehors de cette nouvelle
Date/Time
gestion basée sur 64 bits, la plage varie entre -292 et 292 milliards d'années , ce qui dépasse probablement les besoins de l'humanité à l'heure actuelle.Limitations de WordPress
WordPress introduit et hérite de certaines limitations supplémentaires dans sa base de code.
Flux de données
Du point de vue du flux de travail utilisateur de base, deux processus sont liés à la date:
Notez que ce sont des processus techniquement complètement différents et indépendants. Comme expliqué plus en détail, leurs plages ne se chevauchent pas et la sauvegarde de la date correcte n'équivaut pas à la capacité de la lire correctement dans l'environnement WordPress.
Limites explicites
_wp_translate_postdata()
traite l'année (soumise en tant que numéro distinct du formulaire) et:wp_checkdate()
, qui appelle PHP natifcheckdate()
, qui impose une limite de 1 à 32767Limites implicites
strtotime()
La fonction PHP est utilisée plusieurs fois et est sujette à l'horodatage Unix mentionné ci-dessus, au niveau le plus basmysql2date()
qui affecte toutes les lectures de dates de la base de données, plage de 1902 à 2037 héritéeget_gmt_from_date()
, qui s'attend à ce que l'année soit([0-9]{1,4})
, en la limitant de 1 à 9999 , une forte possibilité de traitement similaire dans d'autres fonctions qui nécessiteront un audit de code plus approfondi pour être énuméréPossibilité de contournements
wp_checkdate()
a unwp_checkdate
filtre qui permet de passer outre ce contrôle de validationdate_i18n()
qui présentedate_i18n
filtre, permet théoriquement d'intercepter et complètement re-sortie processus de dates à l' interface contester si la fonction est passé déjà hors de portée (false
) entrée d'horodatageConclusions
Pour des raisons pratiques et de portabilité des données, la plage de dates de publication WordPress semble être égale à celle de l'horodatage Unix 32 bits et comprend les années 1902 à 2037 inclusivement .
Pour toute opération post-date hors de cette plage, l'environnement doit être audité (plage de 64 bits d'horodatages Unix, MySQL fonctionnant de facto ou stockage de base de données alternatif pour les valeurs). Pour des plages plus éloignées ( inférieures à 1 000, supérieures à 9 999 ), des quantités considérables de code personnalisé seront probablement nécessaires.
Pour toute implémentation de dates arbitraires, il est logique de:
Date/Time
code entièrement personnalisé et / ou des fonctions WordPress audités pour ne pas être affecté par les limites d'horodatage UnixBanc d'essai de code
Le code suivant et un ensemble d'années sélectionnées à la main ont été utilisés pour la recherche ci-dessus et pour tester les conclusions:
la source
r()
?