WordPress : Quel est le moyen le plus rapide de charger des fonctions PHP qui ne sont utilisées que dans un modèle de thème ?

Publié par Jean-Michel le

J’ai développé de nombreux extraits de code PHP pour mon site Web, et je ne sais pas quel serait le meilleur endroit pour les mettre afin de réduire les temps de chargement du site.

S’ils vont dans functions.php ou dans un plugin dédié, alors par défaut ils seront chargés dans chaque page du site — pas seulement les pages qui en ont besoin. Cela a-t-il un impact significatif sur le temps de chargement, ou est-ce sans conséquence si les fonctions ne sont jamais appelées ?

Il semble qu’il serait préférable d’utiliser un conditionnel comme if(is_page_template()) { include_once('this-function.php'); }et de ne charger les fonctions que sur les pages qui les utilisent réellement.

Je pourrais également inclure un fichier php externe à partir du code du fichier de modèle lui-même, ou même inclure les fonctions directement dans le modèle. Les deux semblent bâclés – mais est-ce plus rapide ?

La meilleure méthode est-elle de tout envelopper dans des classes plutôt que d’utiliser des fonctions nommées ?

Solution n°1 trouvée

J’envelopperais mon code dans des classes, puis utiliserais un chargement automatique pour charger les classes uniquement lorsqu’elles sont appelées par votre code.

Voici un exemple:

// register my autoload function
spl_autoload_register('my_wp_autoload');

/**
 * This function is called every time PHP tries to instanciate an undefined class
 */
function my_wp_autoload( $class ) {
    // build the path of the file that holds your class definition
    $filename = dirname( __FILE__ ) . '/include/classes/' . strtolower( $class );

    // if the file exists, include it
    if( file_exists( $filename ) ) {
        include_once( $filename );
    }
}

L’idée derrière cela est que lorsque vous appelez une classe indéfinie dans votre code PHP, l’analyseur exécute d’abord votre fonction de chargement automatique avant de lever une exception. C’est votre dernière modification pour inclure un fichier qui définit la classe.

Solution n°2 trouvée

Ce n’est pas un problème si vous utilisez PHP 7.0+ qui conserve tous les fichiers compilés en mémoire (pas 100% précis mais une assez bonne abstraction), et puisque toutes les autres versions de PHP ne sont pas prises en charge ou sont très proches de leur fin de vie, vous devriez mise à niveau vers la version 7.0+ si vous n’êtes pas sur un.

Quoi qu’il en soit, l’exécution de PHP est rarement le goulot d’étranglement d’un POV de performance, l’accès à la base de données est généralement le goulot d’étranglement. Il est plus important d’écrire votre code d’une manière plus facile à comprendre et à maintenir que de chercher à gagner une micro seconde dans la génération de pages.

Si vous n’avez pas d’opinions bien arrêtées, essayez simplement de suivre la structure des thèmes principaux. Ils n’ont pas nécessairement la meilleure structure, mais plus de gens les connaissent et il sera plus facile d’obtenir une aide pertinente soit comme un conseil, soit comme quelqu’un qui aide à coder le thème.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

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