Quelques très bonnes réponses introductives ici.
Fondamentalement, get_template_part()
permet aux développeurs de thèmes de définir un ordre de spécificité des fichiers de modèle. Pensez-y de manière similaire à la spécificité car elle s'applique aux sélecteurs CSS. Lorsque vous concevez quelque chose, vous voulez commencer avec le strict minimum de spécificité, afin qu'il puisse être facilement remplacé dans les parties d'une conception qui nécessitent une attention individuelle.
Ainsi, par exemple, vous créez un blog et vous créez un fichier loop.php qui fonctionne bien pour baliser les articles. Mais vous planifiez à l'avance et vous l'appelez plus tard dans vos fichiers de modèle avec des spécificateurs de contexte supplémentaires - par exemple, sur la page d'index, vous appelez get_template_part( 'loop', 'index' );
, sur le modèle unique, vous appelez get_template_part( 'loop', 'single' );
, sur les pages d'archives, vous appelez get_template_part( 'loop', 'archive' );
, etc. Cela facilite la tâche lorsque vous décidez de baliser la boucle sur vos pages d'archives différemment de la page d'accueil: créez simplement un modèle loop-archive.php et il sera utilisé plutôt que le loop.php générique .
Mais la magie derrière get_template_part()
est dans la fonction locate_template()
, qui vérifie d'abord le répertoire du thème, puis le répertoire parent (s'il en existe un) pour le fichier nommé. Ceci est très utile pour le développement de plugins. Dans l'un de mes plugins, je définis un type de publication personnalisé et j'ai créé un fichier de modèle de boucle pour ce type de publication personnalisé dans mon répertoire de plugins. Mais ... je veux autoriser les thèmes utilisant mon plugin à remplacer mon balisage s'ils le souhaitent. C'est là que locate_template()
ça fait vraiment des merveilles.
locate_template($template_names, $load = false, $require_once = true )
recherchera chacun des noms dans le tableau $ template_names dans le répertoire des feuilles de style, puis dans le répertoire des modèles. Passant « vrai » comme le moyen d'arguments de charge de $ qu'il exiger le premier fichier trouvé, et renverra une chaîne vide si aucun fichier de modèle a été localisé. Je peux donc faire quelque chose comme ça dans mon plugin:
if ( '' === locate_template( 'loop-mycustomposttype.php', true, false ) )
include( 'loop-mycustomposttype.php' );
... ce qui devrait, je l'espère, faciliter la tâche des développeurs de thèmes pour personnaliser mon plugin simplement en incluant un fichier appelé loop-mycustomposttype.php dans leur thème.