J'ai besoin de voir si une option, et si c'est le cas, obtenir la valeur. Sinon, je dois l'ajouter.
Le Codex fournit:
<?php
$option_name = 'myhack_extraction_length' ;
$new_value = '255' ;
if ( get_option( $option_name ) != $new_value ) {
update_option( $option_name, $new_value );
} else {
$deprecated = ' ';
$autoload = 'no';
add_option( $option_name, $new_value, $deprecated, $autoload );
}
?>
Qui est supposé met à jour le nom de l’option myhack_extraction_length avec la valeur 255. Si l’option n’existe pas, utilisez add_option et définissez autoload sur no.
Cependant, il me semble que la seconde moitié pourrait être appelée de deux manières, si l'option n'existe pas OR si la nouvelle valeur == l'option
Est-ce correct?
La logique du IF THEN ELSE semble un peu bizarre. Si je le lis correctement ...
L'appel à get_option ($ nom_option) renvoie FALSE si l'option n'existe pas ou si elle n'a aucune valeur.
Donc, leSIserait exécuté:
L'appel update_option () mettrait alors à jour la valeur ou créerait l'option avec $ new_value.
LeSINONserait appelé si:
C’est plus simple: vérifiez si l’option n’existe pas (idem si faux/vide). c'est à dire.:
if(!get_option('speccc_nameee')){
update_option('speccc_nameee', 'first_default_value');
}
Est-ce correct?
Si vous voulez dire "quand le 'if' est-il exécuté et quand le 'else' est-il exécuté, alors" Non ". Regardez la condition: if ( get_option( $option_name ) != $new_value ) {
Si l'option n'existe pas - false != '255'
est true
--, la première partie est exécutée. Il s'exécute également si l'option existe et si les valeurs ne correspondent pas --'123' != '255'
est true
.
La else
ne s'exécute que si les valeurs do match-- '255' != '255'
sont fausses, la partie else
est donc exécutée. Ils peuvent correspondre à n'importe quoi, des nombres, des chaînes, des booléens - aka vrai ou faux
Je pense que la meilleure approche à ce problème consiste à créer une logique IF-ELSE comme celle-ci:
if(get_option('some_option')){
update_option('some_option', 'value_we_want_to_add');
}
else {
add_option('some_option', 'value_we_want_to_add');
}
Logique: get_option () retournera TRUE si cette option existe. Dans ce cas, nous pouvons simplement mettre à jour cette option avec une valeur que nous voulons ajouter. Ceci est fait par update_option('some_option','value_we_want_to_add')
. D'autre part, si some_option n'existe pas, get_option retournera FALSE et activera le bloc ELSE. À l'intérieur d'un autre bloc, nous avons donné des instructions pour créer ce "some_option" et lui attribuer la valeur que nous voulons.
Cette logique peut éventuellement être modifiée pour répondre à des exigences plus avancées.