Ich kann das Jahr nicht unter 1899 für einen Posten festlegen. Wenn ich ein Jahr unter 1899 einstelle, wird es automatisch auf das aktuelle Jahr eingestellt.
Ich habe das Timeline- Theme gekauft und im Support-Forum nachgefragt. Sie antworteten:
Dies klingt wie eine Einschränkung, die von Ihrem Hosting-Anbieter erstellt wurde. Nichts in dem Thema verhindert das Datum, das Sie zuweisen - wie Sie sehen, hat die Demo Beiträge mit Datumsangaben in den 1400er Jahren. Wenden Sie sich an Ihren Hosting-Anbieter, um zu erfahren, wie Sie das beheben können.
date
date-time
post-editor
Spartaner
quelle
quelle
WP_DEBUG
und bearbeiten Sie eine Fehlermeldung in Ihrer Frage. Ich hätte es vielleicht so aussehen lassen, aber ein Link zu einer funktionierenden Version des fraglichen Themas ist auch keine große Hilfe.Antworten:
Dies ist keine wirkliche Antwort, sondern nur ein Versuch, den spezifischen Kontext für dieses Problem zu finden. Bitte installieren Sie das folgende Plugin auf Ihrer Site, versuchen Sie, die drei Daten festzulegen und fügen Sie Ihr Ergebnis zur zweiten
<pre>
in der folgenden Tabelle hinzu.Der Inhalt des Plugins kann hier eingesehen werden .
0999
und klicken Sie auf Aktualisieren . Wird es gespeichert oder auf das aktuelle Datum geändert?1899
,2020
und2039
.quelle
Frage und Erwartungen
Während die wörtliche Form dieser Frage im Kontext praktisch ist (Jahr 1899), ist sie im theoretischen Sinne ein wenig vage. Wie alt ist alt Wie weit in die Vergangenheit wollen wir gehen? Was ist mit der Zukunft?
Seit WordPress als Blogging-Engine gestartet ist, hat es sich in diesem Kontext entwickelt, um die folgenden Zeitspannen zu bewältigen:
Als sich die Verwendung von WordPress zu nicht-bloggenden Anwendungen entwickelte, begannen solche Projekte (üblicherweise Geschichte und Kunst, wie ich aus Berichten gesehen habe), verschiedene Probleme mit Daten außerhalb dieser Spanne zu lösen.
Für meine Recherche hatte ich folgende Fragen formuliert:
Plattformbeschränkungen
Da WordPress eine PHP-Anwendung ist und MySQL zur Datenspeicherung verwendet, unterliegt es deren Einschränkungen.
MySQL
WordPress speichert Datumsangaben in einer
post_date
Spalte desDATETIME
Typs in MySQL.Laut Dokumentation unterstützt dieser Typ die Jahre 1000 bis 9999 :
Es heißt jedoch auch, dass frühere Werte möglicherweise funktionieren, ohne dass spätere Werte erwähnt werden:
Während ich empirisch Werte außerhalb des zulässigen Bereichs beobachtet habe, ist dies anekdotisch und fällt aus unserer Zuverlässigkeitsbedingung heraus.
PHP
In der PHP-Programmierung wird häufig die Unix-Zeitstempeldarstellung des Datums verwendet. Laut Dokumentation für unsere Zwecke (PHP 5.2+ und generische 32-Bit-Umgebung) werden die Jahre (vollständig) 1902 bis 2037 unterstützt :
Abgesehen von dieser neueren Version
Date/Time
ist die Verarbeitung 64-Bit und reicht von ungefähr -292 Milliarden bis 292 Milliarden Jahre , was wahrscheinlich die Bedürfnisse der Menschheit zu diesem Zeitpunkt übersteigt.Einschränkungen von WordPress
WordPress führt einige zusätzliche Einschränkungen in der Codebasis ein und übernimmt diese.
Datenfluss
Aus der Sicht des grundlegenden Benutzerworkflows gibt es zwei verarbeitete Daten, die sich auf das Datum beziehen:
Beachten Sie, dass dies technisch völlig unterschiedliche und unabhängige Prozesse sind. Wie weiter unten erläutert, überlappen sich ihre Bereiche nicht und das Speichern des korrekten Datums entspricht nicht der Fähigkeit, es in der WordPress-Umgebung korrekt zu lesen.
Explizite Grenzen
_wp_translate_postdata()
Prozessjahr (als von Formular abweichende Nummer eingereicht) und:wp_checkdate()
, was PHP native aufruftcheckdate()
, was ein Limit von 1 bis 32767 auferlegtImplizite Grenzen
strtotime()
PHP - Funktion wird mehrmals und unterliegt oben genannten Unix - Zeitstempel, auf der untersten Ebene verwendet in ,mysql2date()
dass alle von der Datenbank lesen die Daten betrifft, 1902-2037 Bereich geerbtget_gmt_from_date()
das Jahr erwartet wird([0-9]{1,4})
, wobei davon ausgegangen wird , 1 bis 9999 beträgt. Dies ist eine starke Wahrscheinlichkeit für eine ähnliche Verarbeitung in anderen Funktionen, für die eine gründlichere Codeprüfung erforderlich istMöglichkeit der Problemumgehung
wp_checkdate()
hatwp_checkdate
Filter, mit dem diese Validierungsprüfung außer Kraft gesetzt werden kanndate_i18n()
die hatdate_i18n
Filter, der theoretisch das vollständige Abfangen und erneutes Verarbeiten der Ausgabe von Datumsangaben zur Schnittstelle ermöglicht, jedoch eine Herausforderung, wenn die Funktion bereits außerhalb der range (false
) - Zeitstempeleingabe übergeben wirdSchlussfolgerungen
Für die praktischen Zwecke und die Portabilität von Daten scheint der Post-Datumsbereich von WordPress dem von 32-Bit-Unix-Zeitstempeln zu entsprechen und besteht aus den Jahren 1902 bis einschließlich 2037 .
Für jede Operation außerhalb dieses Bereichs nach dem Datum muss eine Prüfung durchgeführt werden (64-Bit-Bereich von Unix-Zeitstempeln, de-facto funktionierendes MySQL oder alternativer Datenbankspeicher für die Werte). Für weitere Bereiche ( unter 1000, über 9999) ) sind wahrscheinlich erhebliche Mengen an benutzerdefiniertem Code erforderlich.
Für die Implementierung beliebiger Daten ist es sinnvoll:
Date/Time
Code und / oder WordPress-Funktionen, die geprüft wurden, um nicht von Unix-Zeitstempelbeschränkungen betroffen zu seinCode-Prüfstand
Der folgende Code und eine handverlesene Reihe von Jahren wurden für die obigen Untersuchungen und die Prüfung der Schlussfolgerungen verwendet:
quelle
r()
?