在我看来,这两种方式都为最终用户提供了修改主题的机会,而无需实际编辑主题文件(通过子主题)。
我的问题是,一种方法优于另一种方法。
例如,以我现在正在研究的主题为例。我试图决定是否要使用钩子的模板部分。
<?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' ); ?>
上面的内容允许主题的用户通过简单地在其子主题文件夹中创建一个适当命名的文件,以及通过相同的方法-之前/之后模板在每个现有部分之前/之后添加新代码,来替换现有代码的任何部分。零件文件根本不存在于父主题中,只是在那里允许它们插入代码-并且此方法不需要它们了解钩子/过滤器即可完成。
我当然可以使用钩子和过滤器实现相同的目的。
代替使用钩子/过滤器是否有优势?牢记将要使用此功能的目标受众绝对不是精通代码。我可以给他们一个相对基本的指导,让他们可以遵循使用模板方法,但是几乎可以肯定会使钩子使魔鬼迷惑不解。
还是在相同主题下有一个比另一个更好的情况?