Мне кажется, что оба они предоставляют конечному пользователю возможность изменить тему без фактического редактирования файлов тем (через дочерние темы).
Мой вопрос, является ли один метод предпочтительнее другого.
Например, возьмите тему, над которой я сейчас работаю. Я пытаюсь решить, идти ли с шаблонными частями крючков.
<?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' ); ?>
Вышеупомянутое позволяет пользователю темы заменить любой раздел существующего кода, просто создав файл с подходящим именем в своей дочерней папке темы, а также добавив новый код до / после каждого предварительно существующего раздела тем же методом - шаблон до / после файлы деталей вообще не существуют в родительской теме и позволяют просто вставлять код - и этот метод не требует от них понимания хуков / фильтров для достижения этой цели.
Конечно, я могу добиться того же, используя крючки и фильтры.
Есть ли преимущество использования хуков / фильтров? Принимая во внимание, что целевая аудитория, которая будет использовать это, определенно не разбирается в коде. Я могу дать им относительно простую инструкцию, которой они могут следовать, чтобы использовать метод шаблона, но почти наверняка спутает дьявола из них с крючками.
Или есть ситуации, когда один будет лучше, чем другой в той же теме?
Я бы сказал, что основным отличием является удобочитаемость. Если вы видите несколько хорошо названных частей шаблона, вы можете легко понять, что происходит. Если вы просто видите зацепку, вам нужно будет просмотреть остальную часть темы, чтобы установить, что прикреплено к зацепке.
источник
(Относительно) легко удалить функцию из ловушки в дочерней теме, но гораздо сложнее заставить ее игнорировать нежелательный родительский шаблон.
По сути, работа с хуками ближе к стороне PHP, а работа с шаблонами ближе к стороне HTML. Я использую родительскую тему Hybrid, которая очень ориентирована на хуки. Это счастье, пока вам не нужно избавиться от шаблона какого-то из родителей.
Для пользователей, которые не разбираются в технологиях, это не очень хороший вариант. Зачем им вообще возиться с такими внутренними темами?
PS также отметим проблемы с производительностью. Вещи с зацепками происходят в памяти, вещи с шаблонами занимают много места на диске. Особенно, если вы пишете что-то вроде вашего примера.
PPS не всем нравится ... но вместо того, чтобы писать родительскую тему с нуля, почему бы не взять существующую родительскую тему и не предоставить простую дочернюю тему пользователю?
источник