web-dev-qa-db-fra.com

À l'aide de l'API de configuration, comment dois-je ajouter plusieurs valeurs à une option?

J'essaie d'ajouter/mettre à jour des valeurs supplémentaires à une option créée avec l'API de paramètres. J'essaie de faire cela avec ma fonction de rappel de validation, mais je ne vais pas très loin. Voici mon code:

function tccl_settings_option_validate( $input ) {
    add_option( 'tccl_settings_option', $input );
}

Cela cause une très grosse erreur. Comment devrais-je faire cela?

Ce que je voudrais faire est d'utiliser le rappel de validation pour ajouter des valeurs au tableau d'options sans le remplacer.

1
jnthnclrk

Obtenez l'option, modifiez uniquement les valeurs que vous devez modifier, puis renvoyez les résultats.

function tccl_settings_option_validate( $input ) {
    $options = get_option('tccl_settings_option');
    // modify $options using data from $input as needed
    return $options;
}
2
Otto

Sur votre fonction tccl_settings_option_validate, vous devez:

  • obtenir un tableau de toutes les options existantes.
  • mettre à jour que le changé.
  • renvoyer ce tableau.

    donc quelque chose comme:

    function tccl_settings_option_validate( $input ) {
    
    //do regular validation stuff
    //...
    //...
    
    //get all options
    $options = get_option(THEMENAME . '_settings');
    //update only the neede options
    foreach ($input as $key => $value){
        $options[$key] = $value;
    }
    //return all options
    return $options;
    }
    
3
Bainternet

vous n'avez pas à sauvegarder l'option, c'est fait pour vous. votre fonction de validation devrait vérifier les entrées, puis return quelque chose.

function tccl_settings_option_validate( $input ) {
    // do some checking/formatting/whatever of $input
    // and then
    return $input;
}
0
Milo