Aber wenn es um das zusätzliche post_meta geht, das ich in der DB speichern muss, weiß ich nicht, wie ich vorgehen soll, weil ich nicht weiß, wie viele zusätzliche Felder das Formular enthalten wird. Es wird variieren.
Die zusätzlichen Formularfelder könnten also so aussehen …
… aber manchmal könnte es einen dritten Satz dieser Felder geben, oder einen vierten usw. und es gibt wirklich keine Begrenzung, und ich weiß nicht, wie viele Sätze dieser Felder es geben wird.
Wenn es also zum Beispiel einen dritten Satz dieser Felder gibt, sehen sie so aus:
Wie kann ich bereinigen und add_post_meta hinzufügen, wenn ich nicht weiß, was ich erfassen werde?
Prost.
Warum machst du es dir nicht einfach und speicherst alle in einem Array wie dem folgenden:
<!-- With type -->
<input type="text" name="animal[dog][]" value=""/>
<input type="text" name="animal[cat][]" value="" />
<!-- No Type -->
<input type="text" name="animal[]" value="" />
Verstehst du die Idee richtig?
Auf dem Backend bekommt man dann die Felder mit
if( isset( $_POST['animal'] ) ) {
$sanitized_array = array();
foreach( $_POST['animal'] as $type ) {
if( is_array( $type ) ) {
// This is a type, let's go over that
// If it does not exist, create it
if( ! isset( $sanitized_array[ $type ] ) ) {
$sanitized_array[ $type ] = array();
}
foreach( $type as $value ) {
$sanitized_array[ $type ][] = sanitize_text_field( $value );
}
} else {
// It is not an array, so it's a value instead
$sanitized_array[] = sanitize_text_field( $value );
}
}
// We have our sanitized array, let's save it:
update_post_meta( $post_id, 'animal', $sanitized_array );
}
Das ist etwas Ähnliches, das ich bereits erstellt habe, wo die Felder dynamisch ausgeführt werden und wir nicht wissen, wie viel wir sparen müssen.
Ich hoffe, dies gibt Ihnen eine Anleitung, wie man das macht.
Für diejenigen, die mit der Handhabung von POST-Variablen durch PHP nicht vertraut sind, stützt sich dies auf das in PHP eingebaute Zusammenfassen von übermittelten Werten mit Namen, die auf ‘ enden.[]’ zu einem Array zusammengebrochen. Die Reihenfolge sollte immer mit der DOM-Reihenfolge übereinstimmen
– David L
16. März 2017 um 2:25 Uhr
Sie können verwenden foreach um eine beliebige Anzahl von Feldern zu iterieren. Beispiel:
foreach($_POST as $name=>$value){
$sanitizedValue = sanitize_text_field($value);
add_post_meta($post_id, $name, $sanitizedValue);
}
aishwarya
Im folgenden Code habe ich ein Array mit Limit 4 genommen, das Sie setzen können, bis Sie Ihre Tiersätze verwendet haben. Überprüfen Sie dann, welche gepostet wird, und sanieren Sie diese Post-Variable.