$shortname = "nuod";
array( "name" => "Custom Logo URL",
"desc" => "Enter the link to your site's custom logo.",
"id" => $shortname."_logo",
"type" => "text",
"std" => "newlogo.png")
Comment puis-je configurer le std automatiquement comme valeur pour <?php echo get_option('nuod_logo'); ?>
Comme @Ashfame, comme déjà indiqué, vous ne devriez pas stocker les valeurs par défaut dans la base de données - cela devrait être pour les options sélectionnées par l'utilisateur (bien sûr, s'ils sélectionnent les valeurs par défaut, alors stockez-les finement :).
Cependant, vous n'avez pas besoin d'utiliser wp_parse_args()
non plus. get_option
vous permet de sélectionner une valeur par défaut. Par exemple:
//If nuod_logo is not found, uses 'newlogo.pnp'
$number = get_option('nuod_logo', 'newlogo.png')
Cependant, les thèmes et les plug-ins (comme il se doit) conservent souvent leurs options dans un tableau stocké sur une ligne de la base de données. Alors
$my_plugin_options = get_option('my_plugins_options')
devrait renvoyer toutes les options. Vous pouvez donc conserver toutes les options dans un tableau par défaut $my_plugin_defaults
:
$my_plugin_options = get_option('my_plugins_options',$my_plugin_defaults)
mais ce n'est pas génial non plus - vous devez redéclarer $my_plugin_defaults
qui est simplement une copie de code, laissant la place aux bugs, moche - ou vous en faites une variable globale qui est tout simplement fausse. La solution consiste à créer votre propre 'get_option
' qui repose sur les paramètres de l'API de WordPress:
function wpse28954_get_option( $option_name='' ){
$defaults = array(
// Array of defaults: option => default value
)
$options = get_option('my_plugins_options',$defaults);
//Parse defaults again - see comments
$options = wp_parse_args( $options, $defaults );
if( !isset($options[$option_name]) )
return false;
return $options[$option_name];
}
Ceci pourrait être amélioré en autorisant wpse28954_get_option
à définir une valeur par défaut au cas où ce ne serait pas dans les valeurs par défaut définies
Maintenant, vos valeurs par défaut sont stockées dans un endroit facile à gérer et vous pouvez utiliser wpse28954_get_option['my-option']
pour renvoyer le paramètre enregistré ou la valeur par défaut.
AS @Ashfame a souligné dans les commentaires que l'utilisation de wp_parse_args
présente l'avantage de fournir des valeurs par défaut pour un sous-ensemble non sauvegardé d'options. J'ai mis à jour ma réponse pour inclure ceci. (Cela rend le $defaults
dans get_option
plutôt redondant). +1 pour la solution de @Ashfame qui fut le premier à suggérer d'utiliser wp_parse_args
.
Ceci est important, ce que la plupart des gens ne comprennent pas bien. Ne sauvegardez pas les valeurs par défaut dans la base de données. Vous devriez utiliser wp_parse_args()
à cette fin.
$defaults = array (
'logo' => 'http://domain.com/logo.png',
'do_extra_thing' => false
);
// Parse incomming $args into an array and merge it with $defaults
$options = wp_parse_args( $options, $defaults );
Lorsque $options
est vide, comme si vous veniez d'installer un plugin, il peut fonctionner sans écrire quoi que ce soit dans votre base de données. Et quand il contient des valeurs, les valeurs manquantes proviendront du tableau $defaults
.