Cet article a été mis à jour il y a plus de 2 ans. Le contenu qu'il propose n'est peut-être plus à jour.

Ceux qui modifient, créent ou optimisent les thèmes de WordPress ont déjà rencontré ces deux fonctions : Get_Template_Part et Include. Elles servent toutes les deux à  inclure un autre contenu dans votre page. On pourrait également y ajouter vos propres fonctions, puisqu’elles peuvent également rajouter du contenu dans vos articles.

La question, c’est de savoir quelle méthode utiliser pour optimiser au maximum le temps de chargement de votre thème WordPress.

Commençons tout d’abord à présenter les 3 méthodes avant de montrer les résultats.

Get_Template_Part

La fonction Get_Template_Part fait partie intégrante de WordPress, et permet d’intégrer dans plusieurs types de page un même contenu.

Pour le header, le footer ou les éventuelles sidebar, il existe d’autres fonctions pour les appeler directement. Mais imaginons que vous avez créé un bloc de contenu commun à plusieurs types de pages. Vous allez pouvoir appeler depuis celles-ci  un fichier de template. L’idée, c’est de gagner du temps pour la mise à jour et l’évolution de cet élément.

Voici la syntaxe de la fonction Get_Template_Part de WordPress :

<?php get_template_part('nom-du-template');?>

 Il est également possible de complexifier l’appel en ajoutant un type de template en fonction de la page appelante. On appelera alors un fichier sous la forme {slug}-{name}.php.

Par exemple, j’appelle le fichier monloop depuis la page d’accueil de mon blog WordPress. Mon fichier template s’appelera monloop-index.php, et j’utiliserai le code pour l’insérer :

<?php get_template_part('monloop', 'index');?>

De même pour l’utilisation d’un élément de template seomix-is-good depuis vos pages d’articles. Cela donnerait un fichier seomix-is-good-single.php et le code d’appel suivant :

<?php get_template_part('seomix-is-good', 'single');?>

Documentation complète : Get_Template_Part

Include

La fonction Include n’est pas propre à WordPress, mais à PHP. Dans les anciens thèmes du CMS, on la retrouverait presque systématiquement quand on voulait inclure un même contenu dans plusieurs types de template.

Voici la syntaxe de la fonction Include :

<?php include (TEMPLATEPATH . "/mon-fichier.php"); ?>

Cela permettait donc d’inclure le contenu du template mon-fichier.php dans la page en cours. Libre à vous ensuite de mettre le contenu de votre choix dans ce fichier.

Documentation complète : Php Include

Votre fonction WordPress

Pour terminer, il est possible de créer sa propre fonction qui va ajouter du contenu dans vos pages.

Pour créer une fonction, il faut modifier le fichier functions.php de votre thème WordPress. Vous allez pouvoir ainsi créer une fonction simple qui va afficher un contenu, en vous basant sur cette syntaxe :

function nom-de-ma-fonction () {
echo 'montexte';
}

Pour afficher une simple ligne de contenu, ce code deviendrait alors :

function affichemoncontenu () {
echo "Ma super phrase de contenu";
}

Dans les fichiers de votre thème, il suffira ensuite de copier/coller le code d’appel de la fonction pour faire apparaître votre contenu là où vous le souhaitez :

<?php if (function_exists('affichemoncontenu')) affichemoncontenu();?>

Et le tour est joué : vous avez créé votre fonction WordPress pour ajouter un contenu dans les différentes pages de votre bog.

Résultats du test

Le test mis en place pour tester ces différentes fonctionnalités de WordPress est simple : j’ai pris une page d’un blog que je gère et qui possède par défaut 10 articles différents en page d’accueil. J’ai testé l’insertion d’un contenu statique relativement long de 16000 caractères, avec 40 images (4 images répétées 10 fois). Pour mesure le temps de chargement, j’ai utilisé l’outil Webwait pour charger 100 fois la page pour chaque méthode, chaque chargement étant espacé de 2 secondes.

Attention, comme tout test de ce type, il est soumis à trois variables que l’on ne peut maîtriser totalement, et qui peuvent fausser partiellement les résultats obtenus :

  • La connexion Internet de l’endroit du test.
  • La surcharge du réseau sur cette même connexion.
  • La surcharge variable du serveur sur lequel est le site Internet.

Comme le montre le graphique, c’est le fichier functions.php de WordPress qui l’emporte :

Test des fonctions de WordPress
Le test des fonctions de WordPress

Voici les mêmes résultats sous forme de tableau :

Méthode utilisée
Moyenne
Max Min
Sans contenu ajouté 2,69 4,32 2,34
Fonction 2,89 5,72 2,47
Include 3,10 8,16 2,70
Template_part 3,06 7,40 2,51

 

Comme on peut le constater, une fonction personnalisée sera la meilleure méthode pour ajouter du contenu statique dans votre thème: elle bat à plate couture la fonction include ou les get_template_part de WordPress. Cela provient sans doute du fait que le fichier functions.php est forcément chargé par votre thème, et qu’il mettra donc moins longtemps à s’ exécuter plutôt que de charger un autre fichier de template.

Mais les fonctions personnalisées de WordPress ne restent utiles que pour du contenu simple ou statique. Si certains éléments de votre thème font appel à des loops personnalisés par exemple, ou à des requêtes SQL complexes, je vais quand même vous conseiller l’utilisation du Get_Template_Part qui sera plus simple à coder et à implanter, surtout si votre fichier functions est déjà long.