WordPress: afficher un widget n’importe où dans une page

Avec WordPress, j’ai toujours pensé qu’une lecture du code source était souvent plus instructive que la lecture de la documentation elle-même. J’ai encore pu le constater en regardant le code du thème TwentyEleven, et en découvrant comment afficher un widget, n’importe où dans une page.

Il faut regarder la page 404.php pour découvrir l’astuce. Cette page fait apparaître un formulaire de recherche, mais également la liste des tags, des catégories, ainsi que les derniers articles consultés. Plutôt que de faire appel aux fonctions de base, puis de mettre en forme le résultat, les auteurs du thème ont préféré utiliser les widgets pour obtenir directement un affichage formatté.

La fonction a utiliser est the_widget($widget, $instance, $args), dont les paramètres sont:

  • $widget est la classe PHP du widget,
  • $instance regroupe les paramètres du widget lui-même (au format tableau ou chaîne de caractères),
  • $args regroupe les paramètres d’affichage du widget (le conteneur).

Prenons un exemple: si vous souhaitez afficher la liste des catégories (avec le nombre d’articles), il suffit de passer la commande suivante:

1
<?php the_widget('WP_Widget_Categories', 'count=1'); ?>

Le code HTML obtenu sera:

1
2
3
4
5
6
7
8
9
10
<div class="widget widget_categories">
	<h2 class="widgettitle">Categories</h2>		
	<ul>
		<li class="cat-item cat-item-89"><a href="#" title="...">Développements</a> (18)</li>
		<li class="cat-item cat-item-112"><a href="#" title="...">En bref</a> (7)</li>
		<li class="cat-item cat-item-4"><a href="#" title="...">Perso</a> (86)</li>
		<li class="cat-item cat-item-5"><a href="#" title="...">Photo</a> (79)</li>
		<li class="cat-item cat-item-6"><a href="#" title="...">Techno</a> (111)</li>
	</ul>
</div>

Si l’on veut modifier la balise du titre, ou « l’enveloppe » du plugin, il suffit d’utiliser le paramètres $args

1
<?php the_widget('WP_Widget_Categories', 'count=1', array('before_title' => '<h3>', 'after_title' => '</h3>'); ?>

La liste des classes des Widgets par défaut, peut être consultée dans le Codex, ou dans le fichier wp-includes/default-widgets.php.

Il est également possible d’utiliser les classes définies par d’autres plugins.

1 thought on “WordPress: afficher un widget n’importe où dans une page”

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *