web-dev-qa-db-fra.com

API de paramètres - enregistrer un tableau d'options en un seul paramètre (array_push?)

1. Rappel de l'API des paramètres de base.

Utilisation de API de configuration my $ sanitize_callback fonction de validation ressemble à ceci:

    (...)
    if($type == "foo") {
       $valid_input[$id] = $option[$id];
    }  

    else if($type == "bar") {
       $valid_input[$id] = wp_filter_nohtml_kses($input[$id]);
    } 
    (...)

C'est presque pareil que dans ce grand thème de Chip Bennett: https://github.com/chipbennett/oenology/blob/master/functions/options-register.php#L95

2. Eviter la mise à jour des options.

Après la soumission du formulaire, toutes les options sont mises à jour et les valeurs sont remplacées par $ input.

Que se passe-t-il si je ne souhaite pas mettre à jour l'un d'eux (disons que c'est $type est multiple_settings) mais crée plutôt un tableau et y ajoute de nouvelles options? Comment je fais ça?

J'essayais des choses comme:

    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
     } 

Sans chance.

[edit]

Peut-être que cela a quelque chose à voir avec la façon dont je sauvegarde mes paramètres (fonction de retour de validation ci-dessous)?

    $options = get_option('XX_theme_settings'); 
    $valid = array_merge($options,$valid_input);
    return $valid; 

Merci!

4
Wordpressor

Toujours développer avec WP_DEBUG défini sur TRUE. Vous avez une faute de frappe:

array_Push($valid_input[$id], $input[$id];

() manquant après le array_Push)


Vous ne pouvez pas pousser vers des tableaux qui ne sont pas ... des tableaux.

// So, check this before pushing: 
$valid_input[$id] = ! is_array( $valid_input[$id] ) ? (array) $valid_input[$id] : $valid_input[$id];
1
kaiser