[Wordpress] Comment écrire un widget pour Wordpress 2.8 (nouvelle API)?
La nouvelle version de Wordpress, numĂ©rotĂ©e 2.8, devrait sortir d’ici quelques jours.
Très attendue, cette nouvelle mouture apporte un grand nombre d’amĂ©liorations. On y trouve notamment une toute nouvelle API de Widgets, qui se veut beaucoup plus simple et mieux organisĂ©e.
L’Ă©quipe de dĂ©veloppement de Wordpress avait d’ailleurs dĂ©voilĂ©e une image exclusive, il y a quelques semaine de cela.
Le système utilise en effet des mécanismes AJAX pour les mises à jour (enfin) et propose une interface orientée objet. Ainsi toutes les fonctionnalités possèdent leur propre fonction PHP.
Autre innovation de taille, chaque widget pourra ĂŞtre utilisĂ© par plusieurs « barres » (c’est mon tagcloud qui va ĂŞtre content
)
Nous allons voir comment créer un widget pour Wordpress 2.8.
Tout d’abord chaque widget Ă©tendra dĂ©sormais une interface fournit par Wordpress et possède un constructeur.
class Mon_Widget extends WP_Widget{
function Mon_Widget() {
$widget_ops = array(
'classname' => 'mon_widget', // l'identifiant du widget
'description' => 'un widget tout simple qui ne fait rien' ); // la description
$this->WP_Widget('mon_widget', 'Mon widget', $widget_ops);
}
...
}
Pour moi qui vient du monde Java, ce changement m’emplit de joie.
L’interface WP_Widget impose de crĂ©er deux mĂ©thodes: function widget() et function update().
function widget($args, $instance) {
//cette fonction réalise le rendu graphique du widget
echo '<p>Bonjour ! Bienvenu sur Websourcing.fr.</p>';
}
function update($new_instance, $old_instance) {
//cette fonction met Ă jour le widget
}
Une troisième fonction optionnelle permet de crĂ©er le formulaire dans l’interface d’administration (la petite boite qui reprĂ©sente le widget). Vous pouvez ainsi proposer de changer certains paramètres directement dans l’interface d’administration.
function form($instance) {
//pour ajouter un paramètre X
$X = strip_tags($instance['X']);
<p>
<label for="<?php echo $this->get_field_id('X'); ?>">
Valeur de X: <input id="<?php echo $this->get_field_id('X'); ?>" name="<?php echo $this->get_field_name('X'); ?>" type="text" value="<?php echo attribute_escape($X); ?>" />
</label>
</p>
}
Remarquez que vous n’avez plus besoin de rĂ©cupĂ©rer les options en utilisant la fonction get_otions(). DĂ©sormais les variables sont directement attachĂ©es Ă l’instance $instance du widget (d’oĂą la possibilitĂ© d’avoir plusieurs widgets d’un mĂŞme type).
Enfin, pour enregistrer le widget, il faut utiliser la fonction suivante.
register_widget('Mon_Widget'); // on utilise ici le nom de la classe, c'est beaucoup mieux qu'avant.
Je trouve la nouvelle API beaucoup plus évidente. Tout est à sa place et les fonctions sont suffisamment parlantes. Cela nous promet des plugins de meilleure qualité.
Et vous qu’en pensez vous ?









Citer #1 par br1o le 11 juillet 2009 - 14:14
très intéressant en effet, je vais ajouter ce billet dans ma liste des bon tuyaux de br1o
Au fait, c’est quoi le plugin que tu utilise pour les exemples de code ? Merci.
Citer #2 par Lionel Roux le 12 juillet 2009 - 00:56
Hello, merci pour l’ajout.
En ce qui concerne le plugin c’est syntax-hihglighter evolved (le evolved est important).
@+
Citer #3 par br1o le 12 juillet 2009 - 00:59
oki, merci pour l’info
a++
Sur [Wordpress] Comment écrire un widget pour Wordpress 2.8 (nouvelle API)? - Websourcing.fr le 13 juin 2009 - 13:07
[...] this link: [Wordpress] Comment Ă©crire un widget pour Wordpress 2.8 (nouvelle API)? – Websourcing.fr Share and [...]
Sur Les bons liens Wordpress le 10 septembre 2009 - 23:27
[...] Utiliser la nouvelle API de Wordpress 2.8 pour les widget — Nouveau contructeur pour une programmation plus moderne, ce sont les développeurs qui vont être content (n'est-ce pas Mehdi) ! [...]