Дочерняя тема WordPress

Дочерняя тема WordPress – что это и для чего она нужна?

Дочерняя тема WordPressСоздать дочернюю тему в WordPress очень просто и эта процедура подробно описана в кодексе WordPress. Тогда зачем же об этом пишу я? Потому что на 100% уверена, что большинство читателей моего блога о дочерних темах даже не слышали. А те, кто слышали, плохо представляют, что это такое, и зачем они нужны.

Начну, как всегда, со своей истории. Я обычно очень долго ищу шаблоны для своих блогов, которые бы меня устраивали на все 100. Таковых обычно не находится. Поэтому я беру ту, которая ближе всего к моим пожеланиям, и меняю её так, как мне хочется.

Недостаток этого метода таков, что при следующем обновлении темы все мои любовно сделанные изменения пропадают. Я давно знала, что существуют так называемые дочерние темы (в англоязычной литературе они называются тема-ребенок: Child_Theme), в которых можно сделать все изменения, и тогда при обновлении они не пропадут. Но, прочитав в кодексе корявый гугловский перевод инструкции, как это можно сделать, я решила, что это всё сложно и непонятно. Поэтому все изменения сделала в основной теме, и не обновляла её очень долго, прекрасно понимая, что это чревато плохими последствиями.

Не обновляла я ее до тех пор, пока блог не начал глючить. Тогда обновила… Все изменения, естественно, пропали, нужно было их делать заново. Но я уже давно хотела сменить шаблон, поэтому не стала восстанавливать изменения в старом шаблоне, а нашла новый. И вот со сменой шаблона я вспомнила про дочерние темы и снова пошла в кодекс WordPress. Слава богу, теперь там нормальный перевод на русский язык, так что уже что-то можно понять.

Что же такое дочерняя тема. Это тема, которая создается на основе родительской и наследует ее внешний вид и функционал. Но она для того и создается, чтобы менять либо то, либо другое, либо то и другое вместе.

То есть, у Вас есть шаблон, который Вас устраивает, но Вам бы хотелось в нем кое-что изменить – вот для этого и нужна дочерняя тема. А также она нужна для изменения или расширения функциональности Вашей темы.

Итак, создание дочерней темы WordPress по шагам:

  1. Заходим на свой хостинг в папку themes (public_html→wp-content→themes). Зайти на хостинг можно непосредственно через его админ-панель (как, например, в Timeweb), либо соединиться с ним с помощью программы-менеджера, например, Filezilla.
  2. Создаем там новую папку с дочерней темой, назвав ее так, как хочется (например, если Ваша тема называется Classic, то дочернюю можно назвать Child_ Classic, чтобы потом не забыть, кто родитель, а кто ребенок :) ). То есть папка с дочерней темой не вкладывается в родительскую (что кажется логичным), а находится с ней на одном уровне.Папка с дочерней темой WordPress
  3. В папке с дочерней темой необходим только один файл style.css, всё остальное зависит от того, что Вы хотите получить в Вашей новой теме.Этот файл в дочерней теме полностью заменяет аналогичный из родительской. Поэтому при создании темы-ребенка можно пойти двумя путями:

а) скопировать style.css из родительской папки полностью (копирование производится любым доступным способом. В Timeweb это можно сделать просто с помощью команд «Копировать» и «Вставить»), и в начало этого файла вставить такой код:

В принципе, обязательны только эти строки:

в которых указываются названия дочерней темы и родительской (для примера я взяла название родительской темы Classic, а темы-ребенка Child_Classic).

ВНИМАНИЕ!

– Регистр символов в названии папки с родительской темой имеет значение!

– После двоеточия во всех строках должен стоять ТОЛЬКО ОДИН пробел!

б) также cкопировать style.css из родительской папки и удалить из него все содержимое. И в уже пустой файл вставить тот же самый код и плюс еще одну строку:

Или, если проще:

Команда

нужна для импортирования содержимого файла style.css из родительской темы. Но это Вам неважно. Важно, что все Ваши коррективы необходимо размещать обязательно ПОСЛЕ этой команды импорта.

  1. После того, как Вы закинули в дочернюю папку файл style.css со вставленным кодом, приведенным выше, дочерняя тема создана и её можно активировать из админ панели Вашего сайта, как обычно Вы активируете любую установленную тему.
  2. Если Ваши изменения будут касаться не только внешнего оформления, тогда Вам придется скопировать в папку с дочерней темой те файлы, в которые Вы будете вносить изменения. Все файлы, кроме functions.php, также заменяются полностью. Здесь необходимо заметить, что если какие-то файлы в родительской теме находились в подпапке, то Вам нужно сохранить эту конструкцию: сначала создать подпапку с тем же именем, что и в родительской теме, а затем уже туда скопировать нужный файл.
  3. Что касается файла functions.php, то он не заменяет, а дополняет соответствующий файл из темы-родителя, причем загружается перед ним. С помощью этого файла удобно расширять функционал темы (на моем блоге достаточно статей, в которых описывается вставка кода, в том числе, и в этот файл). В этом случае создаете пустой файл functions.php в дочерней папке и вставляете в него необходимый код. Вставленный код обычно имеет вид функции, которая обрамляется открывающим и закрывающим тегами php:

     

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

 

Комментарии

  • Ирина пишет:

    Здорово, я действительно ничего не знала о дочерних темах. Делала изменения в теме, и потом боялась её обновлять. А в последнее время перед обновлением копировала все вставленные скрипты, а затем по новой вставляла их после обновления, но это ужасно долго и не удобно, так как нужно вспоминать, куда и что было установлено. С дочерней темой тоже не всё понятно, нужно почитать кодекс. Как происходит обновление такой темы? Или её не нужно обновлять?

  • Ирина пишет:

    И ещё, у меня тема f2, по моему у тебя тоже. В ней несколько файлов css, какой файл меняется? Как я поняла все файлы в обоих темах одинаковые, а меняется только файл css? И создаётся дополнительный файл functions.php, в который можно вносить свои функции? Так я поняла, или это не верно?

    • В дочерней теме главный файл style.css, потому что там она и прописывается. Другие файлы темы копируются и меняются по необходимости. Я, например, меняла header.php, потому что вставляла логотип, и еще несколько файлов по мелочам. Соответственно, их тоже копировала и меняла в дочерней теме. Про functions ты поняла всё правильно.

  • Ирина пишет:

    Да, я уже разобралась, прочитала на ворде. Конечно эта тема не для новичков, здесь нужно знать хотя бы азы программирования.

  • Ирина пишет:

    Почему то на этой странице у меня ни в одном комментарии не опубликовалась ссылка на последнюю статью блога. А на других страницах публикуется без проблем. Сейчас ещё раз попробую поставить галочку на пост, посмотрим появится или нет! :?:

  • Это просто глюк какой-то. И у меня не появляются, хотя ставлю

  • Валентина пишет:

    Я, конечно же, ничего об этом не знала. Спасибо, мне это будет нужно. А я даже в существующей теме боюсь что-то исправить. И в связи с этой статьей, хочу спросить тебя, Нина. Я хочу немного изменить тематику моего блога. Эта остается, но кроме разведения диких птиц, хочу подключить тему птичьего бизнеса и экологического туризма. Все это у меня в уроках в дальнейшем есть, но я это никак не выделяла. Я собиралась все это преподнести в заключительных уроках. Но несколько писем посетителей с вопросами об этом направлении навели меня на мысль немного видоизменить мой блог. Но чтобы я начала излагать и те материалы, я хочу изменить описание моего блога в заголовке. Хочу, но боюсь. Нина, я должна зайти в хедер и изменить там описание и сохранить. Так? А для дочерней темы нужно только подпапку и все? Новый движок не нужен?

    • Валентина, чтобы изменить описание, ничего страшного делать не нужно. Из админ-панели блога зайдите в меню Настройки (возможно, у Вас это будет называться Параметры), далее Общие (или Общие настройки), а там краткое описание. Вот в этом описании и меняйте.
      И еще, если у Вас стоит плагин All In One SEO Pack (если не стоит, поставьте, найдите у меня соответствующую статью), то там тоже нужно изменить описание и ключевые слова.

    • А, да, на второй вопрос забыла ответить. Для создания дочерней темы нужно только то, что я описала. Никаких движков новых, конечно же, не нужно.
      Но для той цели, что Вы описали, дочерняя тема не нужна. Подправьте описание и ключевые слова, и пишите статьи, о чем хотите.

  • Валентина пишет:

    Нина, спасибо за помощь, так и сделаю.

  • Информация из статьи действительно полезная и нужная, и уверен, пригодится многим читателям вашего блога.

  • Наталья пишет:

    Спасибо, очень полезно. Вряд ли есть блогеры, которым скачанная тема подходила бы по Всем параметрам, всегда хочется что-нибудь да поменять…

  • Азик пишет:

    Наконец стало понятно, что значит дочерная тема. А сами темы сложно создавать??))

  • Превосходно, я действительно ничего даже не знали и даже не обращал внимание по поводу дочерних тем

  • Я как раз из тех, кто о дочерних темах и слыхом не слыхивал :roll:

  • Юрий пишет:

    Доброго времени суток ! Уточните. Если в дочер.теме есть function. php, дополнять просто обернуть код в php или еще что то . У меня почему-то не получается.

    • Здравствуйте, Юрий! Если Вы создаете в дочерней теме файл functions.php, то оформляйте его так же, как он оформлен в родительской теме. То есть, в начале открывающий тег < ?php, если он есть в родительской, а в конце закрывающий ?>, также если он есть в родительской. Шаблоны все разные и файлы functions.php так же оформляются по-разному.
      И еще: functions.php не всякий код принимает, поэтому прежде чем решить, что вставляемая функция не работает в дочерней теме, убедитесь, что она работает в родительской. Просто вставьте этот код туда (не забудьте сделать бэкап файла перед этим). У меня так получилось с одной функцией: она работала в старом шаблоне, а в новом не захотела. Я получила белый лист вместо сайта, когда ее вставила в файл.
      Не знаю, смогла ли я ответить на Ваш вопрос, очень он у Вас неконкретный. Если не смогла, пишите более подробно.

  • Едиге пишет:

    добрый день!
    У меня есть готовый дочерний шаблон, никак не могу установить его!
    Помогите плииз!

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

      • Едиге пишет:

        мне достаточно узнать в какую папку что вложить

        • Едиге, папка с дочерней темой должна быть вложена в папку themes, туда же, где находится и родительская (не надо ее вкладывать в папку родительской темы). Все остальные папки (внутренние), трогать не надо, пусть он остаются так, как есть

          • Едиге пишет:

            ок, попробую!
            Спасибо за ответ!

            • Эдиге, переношу Ваш вопрос сюда, это может пригодиться еще кому-нибудь:
              “Добрый день!
              У меня что то не получается!
              Выдал ошибку (см. скриншот “Ошибка”).
              На втором скриноте я пытаюсь объяснить как я делал. Папку внутри родительского шаблона обозначил “Classipress-child”, а в файле style.css тема дочернего шаблона по другому. Названия должны быть одинаковыми? Что я делаю не так?
              Благодарю за ответ!”
              Отвечаю:
              1. В статье написано: “…папка с дочерней темой не вкладывается в родительскую…”, я Вам в прошлом ответе написала: “…не надо ее вкладывать в папку родительской темы”. Что делаете Вы? По Вашим словам: “Папку внутри родительского шаблона обозначил “Classipress-child”” – то есть, Вы сделали как раз так, как не надо было делать: вложили папку с дочерней темой в родительскую.
              2. Названия дочерней темы в файле style.css и папки с дочерней темой должны называться одинаково.

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">