WordPress 2.5.x: les shortcodes

Les shortcode sont l’une des plus intéressantes nouveautés de WordPress 2.5. Ils standardisent la façon d’insérer ce que l’on veut dans les articles ou les pages. Ils ouvrent la voie à une très grande quantité d’applications, le shortcode Gallery livré en standard avec WordPress en est la preuve.
Voici un résumé de ce qu’il faut savoir pour développer un shortcode.

Côté utilisateur

Si l’on se place du point de vue d’un utilisateur, les shortcode peuvent prendre plusieurs formes:

  • Balise seule: [afficher_logo],
  • Balise seule avec paramètres (ou attributs): [afficher_logo largeur= »200″ hauteur= »150″],
  • Balise englobante: [afficher_message]Ceci est le message[/afficher_message],
  • Balise englobante avec paramètres: [afficher_message type= »error »]Ceci est le message d’erreur[/afficher_message].

Dans la documentation WordPress, ce que j’appelle balise seule s’appelle self-closing shortcode, et balise englobante s’appelle Enclosing shortcode (je suis toujours fâché avec les traductions).

Pour résumer, nous avons d’un côté des self-closing shortcode avec ou sans attributs, et Enclosing shortcode avec ou sans attributs.

Côté développeur

La construction de nouveaux shortcode s’effectue en deux étapes:

  • Ecriture de la fonction proprement dite,
  • Déclaration ou enregistrement de cette fonction.

A chaque type de shortcode correspond un modèle de fonction PHP différent. Dans le cas des self-closing shortcode, la fonction prend la forme suivante:

function shortcode_func($atts){
 
    extract(shortcode_atts(array(
        'paramètre 1' => 'valeur 1',
        'paramètre 2' => 'valeur 2'
		 ... ...
    ), $atts));
 
    $output = ' ... ... ';
    return $output;
}

Globalement, il s’agit de récupérer les attributs (s’il y en a) du shortcode, et de générer le code HTML (ou autre) adéquate.

Dans le cas des Enclosing shortcode, la fonction prend la forme suivante:

function shortcode_func($atts, $content = null){
 
    if ( is_null($content) )
    return false;
 
    extract(shortcode_atts(array(
        'paramètre 1' => 'valeur 1',
        'paramètre 2' => 'valeur 2',
        ...
    ), $atts));
 
	$output = ' ... ... '. do_shortcode($content).' ... ... ';
    return $output;
}

Dans ce cas, la variable $atts contient les attributs du shortcode, et la variable $content contient ce qui se trouve entre la balise ouvrante et la balise fermante.
La seule subtilité de cette fonction, et l’utilisation de la fonction do_shortcode qui permet de gérer l’imbrication des shortcodes.

La déclaration des fonctions précédentes se fait grâce à la commande add_shortcode.

add_shortcode(’shortcode_name’, ‘shortcode_func’);

Conclusion

La solution trouvée par les développeurs de WordPress, pour l’implémentation des shortcodes, est très simple et efficace. D’un point de vue utilisateur, les shortcode évite la saisie directe de code HTML dans les articles. D’un point de vue développeur, ils normalisent l’insertion d’objets dans ces mêmes articles. Enfin, du point de vue de la plateforme elle-même, je pense que nous gagnons en robustesse et en performance.

Références

Si vous voulez comprendre le pourquoi du comment sur les shortcodes, je vous conseille les lectures suivantes:

  • (fr) WordPress 2.5 et les ShortCodes #1: Présentation – BurningHat.net
  • (fr) WordPress 2.5 et les ShortCodes #2: Les paramètres – BurningHat.net
  • (fr) WordPress 2.5 et les ShortCodes #3: Contenu et imbrication – BurningHat.net
  • (fr) Générateur de ShortCode et de boutons pour WordPress – WebInventif.fr

Laisser un commentaire

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