it-swarm.com.de

Settings API - speichere ein Array von Optionen als eine Einstellung (array_push?)

1. API-Callback für Grundeinstellungen.

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

2. Vermeiden von Optionsaktualisierungen.

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!

4
Wordpressor

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];
1
kaiser