←back to Blog

Nouvelle API de Widgets pour WordPress 2.8, et un multi widget pour l’extension WP-Polls !

Alors qu’il n’y a pas encore de changements sur l’UI des Widgets, l’API de développement des Widgets a été revue ! Il est clair que pour les développeurs d’extensions et de Widgets l’ancienne API n’était pas à la hauteur pour la gestion des Widgets multiples…

Eh oui… Entre WordPress 2.3 et WordPress 2.7, l’API des widgets n’a pas bougé d’un pouce alors que l’ergonomie et l’apparence ont complètement changé… L’une des problématiques les plus courantes était dans le cadre de thèmes avec un grand nombre de sidebars… Et oui à part 2-3 Widgets (comme le texte) qui proposaient l’ajout multiple, on était vite coincé…

Par exemple, dans WordPress 2.7, il est impossible de placer un widget « catégories » sur 2 sidebars en même temps… Frustrant lorsqu’on souhaite gérer des sidebars différentes selon la vue (tags, archives, catégories…) où l’on se trouve !

Pour remédier à cela, il fallait créer des widgets multiples, autrement dit que l’on peut ajouter plusieurs fois, la problématique étant que peu d’extensions proposées ce fonctionnement, car plus compliqué à développer.

WP-Polls

C’est le cas par exemple de WP-Polls 2.40, une extension permettant de gérer des sondages, qui par défaut ne possède qu’un seul widget. Cela peut poser problème si vous souhaitez afficher 2 sondages sur 2 sidebars différentes.

Pour mes besoins pros, j’ai dû adapté cette extension afin de la rendre compatible multi widget, et ainsi pouvoir placer autant de sondages que le client souhaitait sur ces sidebars. Je mets par la même occasion à disposition le widget en téléchargement ci-dessous :

WP Polls Widget Multi v2.40 (à renommer en .php et placer dans le dossier « wp-content/plugins »)

Et voici un petit apercu de 4 widget « Poll » en place avec encore la possibilité d’en ajouter :

La version multi widget de l'extension WP-Polls
La version multi widget de l'extension WP-Polls

La difficulté de WordPress 2.7, c’est que l’API pour faire du multi widget est très rudimentaire et de ce fait pas évident à manipuler pour les développeurs d’extensions non confirmés…

Petite comparaison :

  • Mon widget multi de WP-Polls (WP 2.7) fait 240 lignes. (dispo ci-dessus)
  • Le même widget (quasiment) fait par l’auteur de WP-Polls avec l’API 2.8 ne fait plus que 75 lignes.

Évidemment lorsque l’API est optimisée, c’est tout de suite plus simple et plus rapide de créer du multi widget ;)

Contrairement à l’ancienne API qui n’était composée que de fonctions PHP classiques, la nouvelle API va faire plaisir au puriste PHP ! Et oui pour la première fois (ou presque), nous devrons étendre une classe existante de WordPress pour ajouter nos widgets, hop petit exemple :

class WP_Widget_Polls extends WP_Widget {

Sur ce rythme on ne pourra bientôt plus critiquer WordPress pour la qualité de son code ;) Bien entendu, tout cela reste compatible PHP4 ! (ce qui n’est pas un cadeau pour les développeurs de WP)

Je ne détaille pas plus ici l’utilisation de la nouvelle API des widgets, j’en reparlerai avec un cas pratique lors de la sortie de WP 2.8. Pour info, la discussion relative à la nouvelle API est disponible sur le trac de WP.

2 réponses à “Nouvelle API de Widgets pour WordPress 2.8, et un multi widget pour l’extension WP-Polls !”

  1. Avatar de Foulsham Eric
    Foulsham Eric

    Bjr, Merci pour ce post. Question ? Existe t-il des « multi-widget » pour gérer les ads ?
    Autrement dit, un widget spécifique à une catégorie par exemple ?
    Sinon, je pratique WP depuis peu et suis scotché par sa puissance. Bravo !