Ich habe auf dieser Website oder in der Google-Suche nach Beispielen für die Überprüfung von benutzerdefinierten Metabox-Feldern nur sehr wenig gefunden.
Wenn jemand Beispiele nennen möchte, sind hier einige Fälle, die nützlich wären
1) Das als 05/02/2011 eingegebene Datum ist ein gültiges Datumsformat.
2) Die in das Textfeld eingegebene Nummer ist numerisch und liegt zwischen 100 und 500.
3) Der Text im Textfeld ist> 25 Zeichen lang
Meine Frage ist nicht so sehr der Code zum Validieren der Felder, sondern wo der Validierungscode abgelegt werden soll. Verwenden Sie Javascript oder PHP? Wenn es sich um Save-Post handelt, Techniken zum Umgang mit fehlgeschlagener Validierung - Update des Posts? Beitrag nicht aktualisieren? - Wie verhindern Sie die Aktualisierung? Der beste Weg, um den Benutzer über die Probleme zu informieren.
Alle Vorschläge sind willkommen. Beispielcode ist hilfreicher als nur eine Beschreibung einer Technik. (Dies wäre ein sehr gutes Thema für jemanden, über den er einen Artikel schreiben könnte.) Vielen Dank
quelle
Antworten:
Direkt aus dem WP Codex @ http://codex.wordpress.org/Function_Reference/add_meta_box rufen Sie den
save_post
Hook auf und geben die Funktion an, die zum Validieren / Speichern Ihrer Daten ausgeführt wird:Dann definieren Sie diese Funktion, der automatisch die Post-ID übergeben wird. Darüber hinaus können Sie auf das Array $ _POST zugreifen, um die Werte in Ihren Metaboxen abzurufen:
Alle Ihre Routinen zu gültigen Daten werden innerhalb dieser Funktion ausgeführt. Am Ende werden Sie die Daten wahrscheinlich mit folgenden Elementen speichern:
update_post_meta('meta_key', 'meta_value');
EDIT: Mir ist klar, dass ich nicht auf die Breite Ihrer Frage eingegangen bin, aber da ich die Zeit dafür aufgewendet habe, lasse ich es hier, um Ihnen ein Viertel des Weges dorthin zu bringen.
quelle
Es gibt wirklich keine geeignete Möglichkeit, ein Datumsfeld zu validieren. Sie können es nur aufteilen und in Teilen überprüfen.
Es gibt
checkdate()
, aber wie in den Kommentaren auf der Dokumentenseite erwähnt, kann es nicht als wirksames Mittel zur Bereinigung der Datumseingabe verwendet werden.Das erste, was ich normalerweise überprüfe, ist der Datentyp. Wenn ich einen String erwarte, dann in einen String umwandeln und ebenfalls für Integer- und Array-Werte.
Für Datumsfelder haben Sie normalerweise einen Trenner zwischen jedem Teil des Datums, der darauf basierend aufgeteilt wird und die Teile (wie viele Sie auch erwarten) als Ganzzahlen umwandelt.
Dies hängt natürlich wirklich davon ab, wie Sie das Datum speichern und was Sie in diesem Feld erwarten. Sie müssen es nur entsprechend Ihren spezifischen Anforderungen entsprechend bereinigen.
Numerische Werte sind recht einfach, zuerst in int ..
Überprüfen Sie dann, ob es innerhalb Ihres vorgegebenen Bereichs liegt (gemäß Ihrer Frage).
oder..
Es ist einfach zu überprüfen, ob eine Zeichenfolge eine bestimmte Länge hat. Ich werde Sie also einfach mit der PHP-Dokumentation für strlen verknüpfen.
http://php.net/manual/en/function.strlen.php
Die Datumswerte sind meiner Meinung nach am schwierigsten, aber es geht wirklich darum, Ihren Code so zu schreiben, wie Sie es von diesem Feld erwarten. Wenn Sie beispielsweise ein Feld mit einem Datumsformat von haben
D/M/Y
, wissen Sie, dass der/
(Schrägstrich) vorhanden sein wird (sollte) und dass die Aufteilung auf diesem Delimeter ein Array von 3 numerischen Werten ergeben sollte ... (wenn die Aufteilung dies nicht tut) Wenn Sie keine 3 Werte angeben oder keine gültigen numerischen Werte vorliegen, waren die Daten ungültig.Hoffe das hilft .. (und ich bin offen für Kritik, wenn jemand eine bessere Methode für eines der oben genannten hat).
quelle
Um die Eingabe ordnungsgemäß zu validieren, müssen Sie eine Kombination aus Javascript und PHP verwenden.
Ich empfehle dringend, das jQuery Validation-Plugin zu verwenden: http://docs.jquery.com/Plugins/Validation . Sie können die Eingaben sofort validieren und dem Benutzer Feedback geben, dass etwas nicht stimmt.
Der zweite Schritt besteht darin, die Daten mit PHP zu validieren. WordPress verfügt über eine Reihe integrierter Validierungsfunktionen. Wenn Sie also nicht finden, was Sie benötigen, bauen Sie einfach die Logik ein, die Sie benötigen.
quelle