web-dev-qa-db-fra.com

Quand est-ce que get_template_part () est préférable à simplement utiliser les fichiers template.php?

Dans ce message sur wordpress.stackexchange.com j'ai demandé si l'utilisation de get_template_part (), illustrée dans le thème TwentyTen, est une pratique recommandée. Le consensus général que j'ai obtenu est que ce n'était pas nécessairement la meilleure pratique dans toutes les situations.

La question qui se pose alors est la suivante: pouvez-vous me fournir un exemple d'utilisation de get_template_part () serait plutôt que de définir simplement les fichiers template.php distincts?

Par exemple, je peux définir archive.php, single.php et page.php; ou je peux définir loop-archive.php, loop-single.php et loop-page.php.

Dans quelles circonstances serait-il préférable d'utiliser get_template_part ('loop', 'single') et de tirer parti de loop-single.php plutôt que de définir single.php?

6
Tom Auger

Une approche recommandée pour utiliser get_template_part serait d'inclure des bits de code qui seraient autrement répétés fréquemment dans tous vos modèles. Comme si vous aviez des conditions définies dans votre boucle que vous vouliez inclure dans archive.php, search.php, single.php, etc.

Il permet également aux thèmes enfants de remplacer ce fichier et d'inclure d'autres fichiers plus spécifiques. Par exemple, si vous avez utilisé get_template_part( 'loop', 'single' ) et que votre thème ne contient qu'un fichier nommé loop.php, un thème enfant pourrait inclure un fichier nommé loop-single.php qui remplacerait votre fichier loop.php.

Il s’agit en gros d’une balise personnalisée pour les fichiers de modèle autres que l’en-tête, la barre latérale ou le pied de page.

3
Chris_O

Je ne pense pas qu'il y ait jamais une raison valable de NE PAS utiliser la partie get_template. Avant qu’il n’existe, les thèmes WordPress étaient remplis de code répété et prenaient beaucoup de temps et étaient source de confusion pour permettre des modifications plus importantes. Avoir un fichier de boucle qui est toujours utilisé pour afficher des publications est une aubaine pour les thèmes enfants et pour ceux qui souhaitent "bifurquer" des thèmes. Si vous examinez le code du thème Twenty Eleven (en cours de développement), vous verrez que les parties de modèle ont également été étendues aux formats de publication. Vous remarquerez également que "The Loop" a été supprimé du modèle et placé dans le modèle d'appel. Je pense que c’est la meilleure façon d’utiliser les parties de gabarit pour le contenu de publication et est beaucoup plus souple que Twenty Ten.

Saviez-vous qu'un autre modèle se comporte presque de la même manière que get_template_part ()? J'ai écrit un article et expliqué comment: http://wordpress.mfields.org/2011/adding-context-to-template-parts/

IMHO le plus flexible un thème parent est le meilleur!

2
mfields

get_template_part() devrait (à mon humble avis) être utilisé si vous utilisez ce code dans plusieurs modèles. Par ex. un en-tête, un menu de navigation ou une barre latérale.

Les modèles doivent (encore une fois) être utilisés si un modèle diffère de plus de quelques lignes du reste des modèles.

Personnellement, j’utilise uniquement un simple index.php comprenant des balises conditionnelles pour charger les parties de mon modèle spécifiques à la requête dans mon petit thème de base. Dans le thème plus large, je n'ai que des crochets dans mon fichier index.php et des parties de mon modèle dans certaines conditions (mais la configuration est beaucoup plus complexe - principalement real cms).

1
kaiser

S'appuyant sur la réponse de Kaiser, get_template_part() est utile pour le code répétitif. Par exemple, la plupart de vos pièces de modèle principales ont probablement une boucle très similaire. Le fait de placer cette boucle dans un fichier appelé loop.php et d'appeler get_template_part('loop'); signifie que, la prochaine fois que vous souhaitez modifier le code de la boucle de votre site, vous le faites une fois à un endroit plutôt que la douzaine de fois dans la douzaine de fichiers modèles .

C'est un avantage énorme de get_template_part(). L’autre, et le plus important, à mon avis, c’est que cela fonctionne très bien avec les thèmes parent/enfant. En reprenant l'exemple loop.php, si vous avez un thème enfant et que vous souhaitez modifier le code de la boucle dans votre thème enfant mais que vous ne souhaitez pas modifier le reste du modèle, il vous suffira de remplacer le fichier loop.php de votre enfant. thème, plutôt que la douzaine d'autres fichiers de modèle.

1
John P Bloch