Utiliser PHPExcel dans un « shortcode » WordPress

PHPExcel est une bibliothèque permettant de générer un fichier Excel (.xslx) à l'aide de PHP. Cette bibliothèque, qui est largement utilisée dans les programmes PHP, peut également être utilisée dans un site WordPress.

Généralement, le code permettant de générer le fichier Excel sera écrit dans un fichier PHP qui ne contient aucun code WordPress. Ce fichier sera appelé par une fonction de rappel rattachée à un « shortcode ». Cet article vous présente les étapes à suivre pour développer ce fichier ainsi que la fonction de rappel.

▼Publicité

Utiliser header() dans un « shortcode »

Le premier réflexe du programmeur qui souhaite générer un fichier Excel dans WordPress, c'est d'écrire le code de génération Excel directement dans la fonction de rappel rattachée au « shortcode ». Mais, oh malheur, ceci ne fonctionne pas !

Pourquoi ? Rappelons-nous d'abord que pour générer un fichier Excel, il faut utiliser la fonction header() pour préparer l'envoi du fichier au navigateur. Et pour que header() puisse faire son travail, il ne faut pas que le navigateur ait commencé à recevoir du code HTML. C'est ici que le bât blesse. En effet, l'architecture de WordPress fait en sorte que lorsque la fonction de rappel associée au « shortcode » est exécutée, WordPress a déjà commencé à envoyer du code HTML au navigateur.

L'appel à header() dans un « shortcode » génère donc l'erreur suivante :

« Cannot modify header information - headers already sent ... ».

Notez que si cette erreur n'apparaît pas à l'écran quand vous entez de faire un header() dans un « shortcode », vous la trouverez probablement dans le fichier debug.log.

Bonne technique pour générer un fichier Excel dans WordPress

Voici donc l'astuce qui sera mise en place pour parvenir à nos fins :

  • Pour générer le fichier Excel, le « shortcode » affichera un formulaire HTML (balise <form>).
    • Ce formulaire ne saisira aucune information.
    • Il contiendra un bouton menant vers le fichier PHP permettant de générer le fichier Excel (défini ci-après).
    • Comme ce fichier PHP ne pourra pas accéder aux fonctionnalités WordPress (il s'agira d'un fichier PHP « pur », hors WordPress), le formulaire contiendra au besoin des champs cachés pour fournir au fichier PHP différentes valeurs obtenues par des fonctions WordPress, comme par exemple le chemin physique (ex : C:\... ) du thème enfant ou de l'extension où le « shortcode » est défini.
  • Dans le dossier du thème enfant ou de l'extension où le « shortcode » est défini, on copiera la bibliothèque de PHPExcel.
  • Dans ce même dossier, on créera un fichier PHP qui contiendra le code permettant de générer le fichier Excel. Les particularités de ce fichier sont les suivantes :
    • On fera les require_once nécessaires pour pouvoir utiliser PHPExcel. Pour retrouver le chemin de la bibliothèque, on pourrait, par exemple, utiliser une valeur lue dans le champ caché.
    • Si on a besoin des variables de session pour générer le formulaire, on fera le nécessaire pour qu'elles soient disponibles.
    • Après la logique permettant de remplir le chiffrier, on enverra le chiffrier au navigateur. Pour cela, on fera les header() nécessaires suivis du createWriter() puis du save().
    • Après avoir envoyé le chiffrier au navigateur, on fera attention de ne pas envoyer de code HTML au navigateur afin de ne pas corrompre le fichier Excel.
Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories