На ум пришло сразу решение в виде дочерней темы, по сути подтемы. Главная идея заключается в том, что все изменения вносятся в дочернюю тему, которая связана с родительской. В результате при обновлении родительской темы, все правки остаются без изменений ведь они лежат в другой теме. В админке будет активироваться дочерняя тема и если подумать логически , то основной станет как раз дочерняя, а родительская будет наполнять ее основой. Получилось как то запутанно, но если понять суть, то все становится понятно 🙂
Скажу сразу, чтобы у Вас не оказалось потом проблем. Родительская тема, должна разрешать изменения. бывает так, что разработчики запрещают это делать, так что если у Вас вылетит предупреждение о том, что тему править нельзя, значит Вам не повезло. Советую также сделать резерв перед началом работ, чтобы в случаи чего вернуть все как было.
И так, давайте приступим к инструкции как сделать дочернюю тему WordPress. Сложного нет, просто нужно понять :).
Первым шагом будет создание каталога в котором будут размещаться файлы будущей дочерней темы. Все темы WordPress находятся в папке wp-content/themes, там же лежит родительская тема. Можете назвать дочернюю тему схожим, не таким же, а схожим именем с родительской. Например У Вас есть тема, которая называется - mythemes. Дочернюю можете назвать, чтобы не путаться потом - childmythemes. В папке с темами themes, получится примерно так:
Теперь мы сделаем так, чтобы наша тема появилась в списке доступных в админке, мы создадим в папке дочерней темы childmythemes файл - style.css. Далее в него нужно добавить примерно следующее содержание.
/* Theme Name: Дочерняя тема childmythemes Template: mythemes Не обязательные параметры: Theme URI: https://gnatkovsky.com.ua/ Description: Дочерняя тема для темы mythemes Author: Gnatkovsky Author URI: https://gnatkovsky.com.ua/ Version: 1.0 */ @import url("../mythemes/style.css"); /*Новые стили*/ .header{background:#333;}
В начале в тегах - /* */ закомментированы параметры которые задают имя теме и ее описание. По сути, важны первые две строки:
- Theme Name: Дочерняя тема childmythemes - название темы, которое отобразится в админке в списке тем.
- Template: mythemes - строка указывает что это тема дочерняя от темы mythemes. Этой строке важен регистр, то есть прописные или строчные буквы, название папки родительской темы должно быть указано точно.
Дальше уже указываются параметры, которые не обязательно к написанию.
- Theme URI: https://gnatkovsky.com.ua/ - ссылка на то где скачана тема, то есть где она взята и тд.
- Description: Дочерняя тема для темы mytheme - описание темы, можно написать что угодно. Описать характеристики темы и тд.
- Author: Gnatkovsky - имя автора
- Author URI: https://gnatkovsky.com.ua/ - ссылка на сайт автора.
- Version: 1.0 - версия темы.
После этой информативной части, первым делом нужно подключить файл стилей из родительской темы. Забегая на перед скажу сразу. Все файлы дочерней темы, будут по приоритету заменять файлы родительской кроме functions.php. Поэтому нам и нужно подключить в дочернем style.css родительский. Делается это такой строкой
@import url("../mythemes/style.css");
В коде что был выше ее тоже видно, mythemes - имя родительской темы, меняйте на свою, думаю тут понятно. Теперь сначала загрузятся стили родительской темы, а уже потом стили дочерней. Так что если в дочерних стилях вы поменяете какой-то параметр уже указанный ранее в родительской теме, то параметр с дочерней будет иметь приоритет, так как он задан позже.
После этой строки уже начинаете писать нужные вам стили. На этом с style.css в принципе все. Двигаемся далее.
Чтобы появилась картинка в админке, как и у других тем, нужно добавить изображение - screenshot.png. Картинка может иметь любой размер.
Теперь перейдем к файлу функций function.php. Как написал раньше, function.php не заменит основной файл, поэтому в него можно просто писать новые функции или переопределять старые, но нужно давать новіе названия, иначе будет конфликт. Он будет загружаться перед родительскими и другими файлами подтемы.
Представим, что вы хотите убрать лишние, стандартные теги из шапки, типа версии Вордпресс и тд. Тогда содержание function.php дочерней темы будет таким:
<?php // Удаляем определение версии WordPress и др бред remove_action ('wp_head', 'wp_generator'); remove_action('wp_head', 'wlwmanifest_link'); remove_action('wp_head', 'rsd_link'); ?>
Остальные файлы. Как написал, если вы добавите файл в дочернюю тему с таким же названием как в родительской, то он заменит своим содержанием родительский. Например возьмем PHP файлы. К примеру, это будет index.php - главная страница темы. Чтобы внести свои изменения, вам надо сделать три шага.
- Копируете index.php с родительской темы и вставляете в дочернюю.
- Вносите в index.php в дочерней теме нужные изменения и сохраняете файл.
- Проверяете на сайте, все ли работает.
Так нужно делать со всеми файлами. Если Файл лежит в родительской теме в какой-то парке, например - inc, то в дочерней он тоже должен лежать в такой же папке.
Если нужно создать новый файл, например какой-то шаблон страницы, то просто создаете его в дочерней теме и все.
Вот собственно, это основные пункты, которые могут понадобится для создания дочерней темы. Все остальное, зависит от ваших нужд требований и тд. Статья большая, кому-то покажется очень сложной, но повторюсь в очередной раз, нужно хорошенько разобраться и все станет ясно.
Лично я не приемник дочерних тем. Как по мне, если иметь определенные навыки и хоть какой-то опыт работы с Вордпресс и знания в верстке, то лучше сделать новую тему, под себя именно то что нужно. Если же это трудно, а править исходную тему не хочется, чтобы не потерять все при обновлении, то данное решение, то что нужно.
На этом все, спасибо за внимание. 🙂