Die Verwendung der Settings API my $ sanitize_callback Validierungsfunktion sieht folgendermaßen aus:
(...)
if($type == "foo") {
$valid_input[$id] = $option[$id];
}
else if($type == "bar") {
$valid_input[$id] = wp_filter_nohtml_kses($input[$id]);
}
(...)
Es ist fast das gleiche wie in diesem großartigen Thema von Chip Bennett: https://github.com/chipbennett/oenology/blob/master/functions/options-register.php#L95
Nach dem Absenden des Formulars werden alle Optionen aktualisiert und die Werte mit $ input überschrieben.
Was ist, wenn ich eines davon nicht aktualisieren möchte (sagen wir, es ist $type
ist multiple_settings
), sondern stattdessen ein Array erstellen und neue Optionen hinzufügen möchte? Wie mache ich das?
Ich habe Dinge ausprobiert wie:
else if($type == "multiple_settings") {
$valid_input[$id][] = $input[$id]; // creates an array but still overwrites
$valid_input[$id] = array_Push($valid_input[$id], $input[$id]); //returns NULL
}
Mit keinem Glück.
[edit]
Vielleicht hat es etwas damit zu tun, wie ich meine Einstellungen speichere (Rückkehr der Validierungsfunktion unten)?
$options = get_option('XX_theme_settings');
$valid = array_merge($options,$valid_input);
return $valid;
Vielen Dank!
Entwickeln Sie immer mit WP_DEBUG
auf TRUE
. Du hast einen Tippfehler:
array_Push($valid_input[$id], $input[$id];
(fehlender )
nach dem array_Push
)
Sie können nicht auf Arrays pushen, die keine ... Arrays sind.
// So, check this before pushing:
$valid_input[$id] = ! is_array( $valid_input[$id] ) ? (array) $valid_input[$id] : $valid_input[$id];