Tuto : Utiliser Smarty dans un plugin WordPress

Le développement d’un plugin pour wordpresss peut s’avérer compliqué et sale si il contient beaucoup de code HTML. N’étant pas moi même développeur, ça ne me gène pas outre mesure, mais mon ami, qui lui est un ingénieur en herbe, a tout simplement horreur de voir et travailler sur un code dégueulasse. D’autant plus qu’il préfère nodeJS et déteste php, language pour lequel il trouve qu’il y a trop de code qui sert a rien.

Alors pour un projet commun, on s’est penché sur la question et avons cherché a intégrer un moteur de template dans le plugin directement, afin de séparer la partie moteur de la partie vue. Nous ne souhaitions pas utiliser d’extension de template WordPress pour la bonne et simple raison que ce n’était pas applicable dans ce contexte et que nous pouvions changer de template a tout moment.

Nous avions lu un peu partout sur le net que ce n’était pas possible, mais finalement, en testant nous même en 5mn, c’était plié. Voici comment nous avons fait.

1 : Créer une page WordPress

Jusque là rien de compliqué, on va utiliser un ShortCode pour afficher notre résultat dans une page de WordPress. Créer simplement une page, et dans la partie « texte », saisissez [testsmarty]. C’est le ShortCode qui nous permettra d’appeler notre fonction dans notre plugin.

2 : Créer le plugin WordPress

Simple aussi, il suffit de placer un dossier « testsmarty » dans le dossier plugins (wp-content/plugins/testsmarty/), puis d’y placer un fichier php : testsmarty.php.

Pour que WordPress identifie le plugin, il faut ajouter les entêtes :

<?php
/*
Plugin Name: Test Smarty
Plugin URI: http://www.mondomaine.fr/
Description: Test d'intégration Smarty dans un plugin WordPress
Author: Kaliseo
Author URI: http://www.seovox.fr/
Version: 1.0
*/

Il faut ensuite simplement l’activer dans l’écran Extensions de WordPress.

Nous allons ensuite créer notre shortcode :

add_shortcode( 'testsmarty' , 'testsmarty' );
function testsmarty() {
}

3 : Ajouter Smarty au plugin

Il faut pour ça, aller télécharger Smarty et le placer dans le même dossier que le plugin. Puis inclure Smarty dans ce dernier :

require 'smarty/libs/Smarty.class.php'; // Inclusion de Smarty
add_shortcode( 'testsmarty' , 'testsmarty' );
function testsmarty() {
	$smarty=new Smarty; // On créé une instance
	$smarty->debugging = true; // On active le debug, cela ouvrira une popup.
	$smarty->caching = true; // Utiliser le cache
	$smarty->cache_lifetime = 120; // Durée du cache
	$smarty->setTemplateDir(__DIR__."/template/"); // On définit le dossier contenant les templates
	$smarty->assign("Test","Le test fonctionne !",true); // On assigne une variable
	$smarty->display('testsmarty.tpl'); // On déclare le template
}

On pourrait également garder le require dans la fonction, mais ça ne change pas grand chose, sauf si vous avez plusieurs fonctions avec plusieurs templates.

4 : On créé ensuite le template

Ajouter le fichier testsmarty.tpl dans un dossier template qui se situe lui même dans notre plugin, et on ajoute une seule ligne :

{$Test}

 Le tour est joué ! Smarty est intégré à notre plugin !

5 : A savoir

Ne créez pas deux plugins intégrant Smarty ou vous aurez une belle erreur « Cannot redeclare function… » Si vous voulez rendre votre plugin public, il faudra personnaliser le nom de la fonction

N’hésitez pas si vous avez des questions !

Vous aimerez aussi...