Qu’est-ce qu’un shortcode ?

Un shortcode WordPress est un raccourci qui permet d’encapsuler du code dans n’importe quel type de contenu, une page, un article, une page d’administration…

C’est très utile lors de la création d’un site internet pour obtenir un comportement personnalisé et dépendant du contexte.

Dans cet article, je prends l’exemple d’un shortcode qui affiche le nombre de vues d’une page, dans la couleur de son choix :

[sukellos_page_views color="orange"]

Ce qui donne :

Sukellos WordPress CSS

Déclaration du shortcode

La déclaration d’un shortcode est très similaire à celle d’un hook. Elle s’effectue grâce à la fonction :

add_shortcode( string $tag, callable $callback )

Développons une première étape qui génère un simple Bonjour dans la couleur passé en paramètre à l’aide de color :

Copier

Lorsque le shortcode [sukellos_page_views] est détecté par WordPress, il est remplacé par le retour d’exécution de la fonction sukellos_page_views_shortcode définie comme callback.

La ligne extract(shortcode_atts( array( 'color' => null ), $atts ) ); permet de filtrer et de récupérer les paramètres du shortcode directement en tant que variables. Le paramètre color peut donc être utilisé directement comme $color dans la suite du code.

C’est le retour de cet appel, donc le contenu de $html_content qui est affiché à l’endroit où est inséré le shortcode.

Compter les vues d’une page

Le compte des vues d’une page peut être implémenté facilement en combinant l’utilisation de :

  • Le hook template_redirect qui est appelé avant chaque génération de page
  • Un postmeta associé à la page concernée, nommé sukellos_page_views_shortcode, qui est incrémenté à chaque visite.
Copier

global $post permet de récupérer le type de contenu courant dans la « boucle » d’exécution de WordPress.

Le cas échéant, cela permet de récupérer les informations sur la page courante. Dans ce cas, l’attribut $post->post_type est égal à page.

Il suffit ensuite de gérer l’incrémentation du postmeta sukellos_page_views_shortcode

Le code intégral

Le code complet comprend l’implémentation du shortcode et de la gestion du compte des vues de page. Le code est adapté afin d’être intégré à une classe dédiée : Sukellos_Page_Views. Il peut être inséré dans un fichier dédié à la classe, ou dans le fichier functions.php dans votre thème enfant.

Copier

La classe Sukellos_Page_Views gère à la fois le traitement du comptage des pages, et celui du shortcode pour son affichage. Il est intéressant de centraliser tout le code dans une classe et de l’écrire dans un fichier qui lui est propre, par exemple class-sukellos-page-views-shortcode.php.

Les raisons sont multiples :

  • Respect des concepts de programmation orienté-objet par le fait de centraliser la responsabilité dans une classe experte, c’est-à-dire qui gère l’information liée au compte des vues : création, modification, affichage
  • Lisibilité ,donc maintenabilité du code, puisqu’il n’est pas agloméré dans un fichier unique comme functions.php, qui deviendrait vite énorme et donc difficile à comprendre et à évoluer.

Attention à bien gérer l’instance de Sukellos_Page_Views afin qu’elle reste unique. Dans le cas contraire, le compte des pages serait démultiplié par le nombre d’instances. En effet, si N instances de Sukellos_Page_Views existent et ont chacune inscrit leur propre shortcode, la méthode action_template_redirect sera appelée N fois à chaque visite de page, et donc le compteur incrémenté N fois également.

Quelques liens pour approfondir

Besoin d’une assistance technique par un expert WordPress ?
Optez pour un crédit temps de quelques heures

Laisser un commentaire