Как создать дочернюю тему 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, внести в него изменения и поместить в дочернюю папку. При работе движка Вордпресс будет использоваться именно он.

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

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

Оцените статью

    Нужна доработка сайта?

    Напишите, что нужно сделать. В рабочее время отвечу в течение 30 минут.




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

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

      Ответить
    2. Roman

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

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

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

      Ответить
    4. Roman

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

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

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

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