Как создать дочернюю тему WordPress

В некоторых случаях при работе над сайтом заказчик просит не вносить изменения в оригинальную тему. Это необходимо, если в будущем планируется делать ее обновления и внесенные в файлы изменения исчезнут.

Для подобных случаев в WordPress предусмотрен механизм создания дочерней темы (child theme). Такая тема использует в качестве основы родительский шаблон и при этом вы можете добавить в нее свои собственные файлы и функции.

Механизм работы с дочерними темами довольно простой. Прежде всего вам нужно в папке wp-content/themes создать новую папку для нее. Будем считать, что папка с основным шаблоном у нас называется parent, а мы создадим новую, которую назовем child.

В папку child нужно поместить, как минимум, один файл style.css. В нем необходимо разместить следующие инструкции:

Первая инструкция (Theme Name: Child) это просто название дочерней темы, фактически она не является обязательной, а вот вторая инструкция (Template: parent) является обязательной, и указывает, что данный шаблон является дочерним к parent.

Если вы помещаете в папку с дочерней темой какой-либо файл, то он заменяет такой же из родительского шаблона. Это правило действует для всех файлов, кроме functions.php.

Поэтому, чтобы сохранить стили родительской темы, вам нужно либо поместить в style.css инструкции из оригинального файла, либо добавить в него следующую инструкцию, которая загрузит style.css:

Для корректной работы перед директивой @import не должно быть никаких правил CSS.

Никаких дополнительных настроек делать не нужно. Иногда автоматическое подключение стилей css из дочерней папки может не работать. Разработчик шаблона должен использовать функции:

  • get_stylesheet_uri() — адрес файла стилей;
  • get_stylesheet_directory_uri() — адрес папки со стилями,

но он может подключать style.css каким либо другим способом, что приводит к возникновению проблем. В этом случае, скорее всего, будет не сложно посмотреть код и найти проблему.

Подробнее по файлу functions.php. Если в дочерней теме есть такой файл, то движок сначала загрузит именно его, а затем файл с этим именем из родительской папки. Таким образом вы можете свободно расширять функционал шаблона.

Все прочие файлы, находящиеся в дочерней папке, как уже было сказано, заменяют аналоги из родительской темы. То есть вы можете взять оригинальный single.php, внести в него изменения и поместить в дочернюю папку. При работе движка Вордпресс будет использоваться именно он.

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

Структура папок в дочерней теме должна совпадать с родительской структурой, если вы модифицируете файлы во вложенных папках.

Оцените статью
Делаем сайт своими руками
Комментарии: 5
  1. Евгений

    Спасибо, ваша статья помогла разобраться. Как и всегда всё содержательно и понятно.

    Ответить
  2. Roman

    Статья хорошая — спасибо, многое объясняет, но я не всё понимаю…
    Я так понял — если файл с изменениями single.php добавлять в дочернюю тему, то вставлять нужно в таком виде какой он есть (естественно со своими дополнениями) — т.е. без всяких каких-либо дополнительных строк в начале.
    Интересно в родительской теме сам файл single.php может быть как-то тоже изменён автором при обновлении или эти файлы уже не трогают?
    Просто я новичок — занялся было этим делом и что-то вдруг вопросы «непонятные» начали появляться…

    Ответить
  3. Ложников Андрей (автор)

    Roman, совершенно верно, вы можете скопировать single.php из родительской папки в дочернюю и внести в нее свои изменения. Если в дочерней папке будет файл single.php, то выполняться будет именно он, файл из родительской папки выполняться не будет.

    Ответить
  4. Roman

    Спасибо Вам за ответ. Вчера вроде разобрался с основными вопросами. Единственное, если функции изменённого файла будут подхватываться из дочерней темы, то при очередном её обновлении (если автор вдруг решит изменить и этот файл тоже) данные так и будут браться из этого файла — который останется без этих изменений или придётся как-то отслеживать это. Хотя, по моему разработчики шаблонов, как правило вносят изменения в файл функций, а основные файлы с версткой стараются не трогать.

    Ответить
  5. Ложников Андрей (автор)

    Файл function.php используется как из дочерней, так и из родительской темы (это единственный файл, который так отрабатывает). Поэтому если разработчик добавит функцию в этот файл, она будет работать, несмотря на то, что у вас будет и свой файл function.php в папке с дочерней темой.

    Ответить
Добавить комментарии