Il me semble que ces deux options permettent à l'utilisateur final de modifier un thème sans réellement éditer les fichiers de thèmes (via des thèmes enfants).
Ma question est, est une méthode préférée à l'autre.
Par exemple, prenez un thème sur lequel je travaille actuellement. J'essaie de décider s'il faut aller avec des parties de modèle de crochets.
<?php get_template_part('before_sitecontainer' ); ?>
<div id="sitecontainer" class="sitecontainer" <?php //closed in footer ?>>
<?php get_template_part( 'before_topcontainer' ); ?>
<div id="topcontainer ">
<?php get_template_part( 'before_topedge_navigation' ); ?>
<?php get_template_part( 'topedge_navigation' ); ?>
<?php get_template_part( 'before_site_header' ); ?>
<?php get_template_part( 'site_header' ); ?>
<?php get_template_part( 'before_second_navigation' ); ?>
<?php get_template_part( 'second_navigation' ); ?>
<?php get_template_part( 'after_second_navigation' ); ?>
</div><!-- end topcontainer div -->
<?php get_template_part( 'after_topcontainer' ); ?>
Ce qui précède permet à l'utilisateur du thème de remplacer n'importe quelle section de code existant en créant simplement un fichier nommé de manière appropriée dans son dossier de thème enfant ainsi qu'en ajoutant un nouveau code avant / après chaque section préexistante par la même méthode - le modèle avant / après les fichiers de pièce n'existent pas du tout dans le thème parent et sont là simplement pour leur permettre d'insérer du code - et cette méthode ne nécessite pas qu'ils comprennent les crochets / filtres pour accomplir cela.
Je pourrais bien sûr obtenir le même résultat en utilisant des crochets et des filtres.
Y a-t-il un avantage à utiliser des crochets / filtres à la place? Garder à l'esprit le public cible qui utilisera ceci n'est décidément pas un connaisseur du code. Je peux leur donner des instructions relativement basiques qu'ils peuvent suivre pour utiliser la méthode du modèle, mais ils vont sûrement les confondre avec des crochets.
Ou existe-t-il des situations où l'une serait meilleure que l'autre dans le même thème?
Je dirais que la principale différence est la lisibilité. Si vous voyez plusieurs parties de modèle bien nommées, vous pouvez facilement comprendre ce qui se passe. Si vous voyez juste un crochet, vous devrez parcourir le reste du thème pour déterminer ce qui est attaché au crochet.
la source
Il est (relativement) facile de supprimer la fonction du crochet dans le thème enfant, mais beaucoup plus difficile de le faire ignorer le modèle parent indésirable.
Essentiellement, travailler avec des hooks est plus proche du côté PHP et travailler avec des modèles est plus proche du côté HTML. J'utilise le thème parent hybride, qui est très orienté hook. C'est un bonheur jusqu'à ce que vous ayez besoin de vous débarrasser du modèle d'un parent.
Pour les utilisateurs qui ne sont pas technophiles, ce n'est pas une très bonne option. Pourquoi auraient-ils besoin de jouer avec de tels thèmes internes de toute façon?
PS note également des problèmes de performances. Les trucs avec des crochets se produisent en mémoire, les trucs avec des modèles nécessitent beaucoup de recherches sur le disque. Surtout si vous écrivez quelque chose comme dans votre exemple.
PPS n'est pas la préférence de tout le monde ... mais au lieu d'écrire le thème parent à partir de zéro, pourquoi ne pas prendre le thème parent existant et fournir un thème enfant simple à l'utilisateur?
la source