web-dev-qa-db-fra.com

Quelle est la méthode la plus efficace pour charger des widgets dans functions.php

J'ai vu des développeurs WordPress utiliser deux méthodes différentes pour charger des widgets personnalisés à partir du fichier functions.php.

La première:

include("functions/my-custom-widget.php");

La deuxième:

require_once(dirname(__FILE__) . "/functions/my-custom-widget.php");

Laquelle de ces méthodes est la plus efficace? Je suis particulièrement intéressé par la performance s'il y a une différence. Require_once suit-il de meilleures "meilleures pratiques"?

Je suis sûr qu'il y a beaucoup d'autres façons de le faire. Si quelqu'un a une meilleure recommandation, j'aimerais l'entendre.

Merci.

2
derekshirk

Les deux sont acceptables mais non recommandés. Utilisez plutôt locate_template() car un thème enfant peut alors écraser le fichier chargé.

Exemple:

$found = locate_template( 'functions/my-custom-widget.php', TRUE, TRUE );

La première TRUE indique à WordPress non seulement de rechercher le fichier, mais également de le charger . La seconde en fait un appel require_once.

La fonction renvoie le chemin d'accès au fichier localisé au cas où vous en auriez besoin ultérieurement. Si rien n'est trouvé, il retourne une chaîne vide.

5
fuxia

require_once ( documentation PHP )

vérifiera si le fichier a déjà été inclus, et si c'est le cas, ne l'incluez pas (à nouveau).

Cette vérification prendra plus de temps. Si vous savez ce que vous faites (y compris), vous devriez abandonner la partie _once et gagner du temps.

EDIT: vous ne verrez pas la différence avec seulement quelques fichiers. Mais si vous n'incluez pas beaucoup de fichiers, vous ne gâcherez pas votre inclusion/besoin avec quelque chose d'aussi simple qu'un thème WP, alors à mon humble avis, il ne sert à rien d'empêcher plusieurs appels identiques. fichier.

À propos de la différence entre require() et include():

require est identique à include sauf qu'en cas d'échec, une erreur fatale de niveau E_COMPILE_ERROR sera également générée.
En d’autres termes, le script sera arrêté alors que include n’émet qu’un avertissement (E_WARNING) qui permet au script de continuer.

2
FelipeAls