Ainsi, j’ai réussi à ajouter une option déroulante. Le problème, c’est que lorsque je clique sur Enregistrer, toutes les options sont supprimées. Cependant, l’option choisie est implémentée avec succès.
Voici le code pertinent:
function widget($args, $instance) {
extract( $args );
$pfxattribution = $instance['pfx-attribution'];
}
<p>
<label for="<?php echo $this->get_field_id('pfx-attribution'); ?>"><?php _e('Choose attribution:'); ?></label>
<select id="<?php echo $this->get_field_id('pfx-attribution'); ?>" name="<?php echo $this->get_field_name('pfx-attribution'); ?>" class="widefat" />
<option>Purefx</option>
<option>Foreign Exchange</option>
<option>Currency Exchange</option>
</select>
</p>
function update($new_instance, $old_instance) {
// Get the old values
$instance = $old_instance;
// Update with any new values (and sanitise input)
$instance['pfx-attribution'] = strip_tags( $new_instance['pfx-attribution'] );
return $instance;
}
Toute aide est grandement appréciée
Danny, ceci est à peu près levé directement d'un plug-in que j'ai créé:
<?php function form($instance){
$instance = wp_parse_args( (array) $instance, $this->w_arg );
?>
<p>
<select id="<?php echo $this->get_field_id('order'); ?>" name="<?php echo $this->get_field_name('order'); ?>" type="text">
<option value="asc" <?php selected($instance['order'], 'asc'); ?>>ASC </option>
<option value="desc" <?php selected($instance['order'], 'desc');?>>DESC </option>
</select>
</p>
<?php
}
?>
Sans voir le reste de votre code, je ne peux pas être sûr de la racine du problème, mais il se peut que le formulaire ne soit pas intégré à la fonction de formulaire. Si ce qui précède ne semble pas fonctionner pour vous, peut-être coller votre classe de widgets?
Je devrais peut-être ajouter que ma classe de widgets a une variable w_arg
, un tableau de valeurs par défaut! Par exemple.
var $w_arg = array(
'order'=> 'ASC'
);
Votre <option>
s a besoin de value=
ou ils n'envoient aucune valeur ... essentiellement en ce moment value=''
, c'est-à-dire, je parierais, ce que vous voyez.
Votre <select>
ne doit pas avoir d'attribut value
, ni d'attribut type="text"
.