Предполагаю ли я создавать дочернюю тему для каждой темы, которую я использую?

Недавно я узнал о детской тематике и задался вопросом, нужно ли создавать дочернюю тему для каждой темы, которую я создаю. Мне просто кажется странным, как другие темы работают без детских тем, а другие нет.

Детские темы – это не единственный способ расширить тему, даже не лучшую.

Многие темы предлагают крючки: действия и фильтры. Вы можете использовать их для изменения вывода на плагин.

Допустим, у вас есть тема под названием Acme , а ее index.php содержит следующий код:

 get_header(); do_action( 'acme.loop.before', 'index' ); ?> <div id="container"> <div id="content" role="main"> <?php /* * Run the loop to output the posts. * If you want to overload this in a child theme then include a file * called loop-index.php and that will be used instead. */ get_template_part( 'loop', 'index' ); ?> </div><!-- #content --> </div><!-- #container --> <?php do_action( 'acme.loop.after', 'index' ); do_action( 'acme.sidebar.before', 'index' ); get_sidebar(); do_action( 'acme.sidebar.after', 'index' ); get_footer(); 

Теперь вы можете написать небольшой плагин для добавления оберток (возможно, для второго фонового изображения) вокруг этих конкретных областей:

 add_action( 'acme.loop.before', function( $template ) { if ( 'index' === $template ) print "<div class='extra-background'>"; }); add_action( 'acme.loop.after', function( $template ) { if ( 'index' === $template ) print "</div>"; }); 

Добавьте другие, отдельные плагины для других модификаций.

Это имеет четыре преимущества:

  1. Вы можете отключить дополнительное поведение в своем администрировании плагинов, если вы этого больше не хотите. В отличие от дочерних тем вы делаете это для каждого плагина отдельно, вам не нужно включать все настройки, как вы, когда у вас есть только одна дочерняя тема.

  2. Это намного быстрее, чем дочерняя тема, потому что, когда WordPress ищет шаблон и не может его найти, он будет искать как в дочерних, так и в родительских темах. Этого не может быть, когда нет детской темы.

  3. Легче отлаживать, когда что-то идет не так. С дочерними темами трудно понять, откуда исходит ошибка, дочерняя или родительская тема. Или и то, и другое.

  4. Безопасные обновления. Иногда, когда вы обновляете родительскую тему, дочерняя тема больше не работает или хуже: она работает по-другому. Это может даже вызвать фатальную ошибку, потому что вы используете функцию в дочерней теме, которая больше не доступна в родительской теме.

Резюме. Используйте крючки всякий раз, когда можете, используйте дочернюю тему только в том случае, если родительская тема не предлагает хороший крючок. Попросите автора темы добавить недостающий крючок. Если вы можете предложить действительный прецедент, я уверен, что он / она его выполнит.

Для меня эмпирическое правило заключается в том, что я расширяю / перерабатываю существующую тему? Если это так, я хочу, чтобы у меня была возможность обновить тему (при условии, что она хорошо поддерживается), без необходимости всех моих изменений. Вы можете прочитать больше здесь, в кодексе.

Если я создаю что-то обычное, я считаю, что лучше всего использовать мою собственную стартовую тему (или что-то вроде Underscores ) и отредактировать саму тему.