Parece-me que ambos oferecem a oportunidade para o usuário final modificar um tema sem realmente editar os arquivos de temas (via temas filhos).
Minha pergunta é: é um método preferido em relação ao outro.
Por exemplo, pegue um tema em que estou trabalhando agora. Estou tentando decidir se deve ir com partes do modelo de ganchos.
<?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' ); ?>
O item acima permite que o usuário do tema substitua qualquer seção do código existente, simplesmente criando um arquivo com nome apropriado na pasta do tema filho, além de adicionar um novo código antes / depois de cada seção pré-existente pelo mesmo método - o modelo antes / depois os arquivos de peça não existem no tema pai e existem apenas para permitir a inserção de código - e esse método não exige que eles entendam ganchos / filtros para fazer isso.
É claro que eu poderia conseguir o mesmo usando ganchos e filtros.
Existe uma vantagem em usar ganchos / filtros? Tendo em mente que o público-alvo que usará isso não é decididamente esclarecido por código. Posso dar-lhes instruções relativamente básicas que podem seguir para usar o método de modelo, mas quase certamente confundirei o diabo com ganchos.
Ou há situações em que uma seria melhor que a outra dentro do mesmo tema?
Eu diria que a principal diferença é a legibilidade. Se você vir várias peças de modelo bem nomeadas, poderá entender o que está acontecendo com facilidade. Se você vir apenas um gancho, precisará pesquisar o restante do tema para estabelecer o que está anexado ao gancho.
fonte
É (relativamente) fácil remover a função do gancho no tema filho, mas é muito mais difícil ignorar o modelo pai indesejado.
Trabalhar essencialmente com hooks está mais próximo do lado do PHP e trabalhar com modelos está mais próximo do lado do HTML. Eu uso o tema pai híbrido, que é muito orientado a ganchos. É uma felicidade até você precisar se livrar do modelo de alguns dos pais.
Para usuários que não são conhecedores de tecnologia, também não é uma opção muito boa. Por que eles precisariam mexer com esses temas internos de qualquer maneira?
O PS também observa problemas de desempenho. Coisas com ganchos acontecem na memória, coisas com modelos exigem muitas pesquisas de disco. Especialmente se você estiver escrevendo algo como no seu exemplo.
PPS nem a preferência de todos ... mas, em vez de escrever o tema pai a partir do zero, por que não usar o tema pai existente e fornecer um tema filho simples ao usuário?
fonte