Статья рассказывает, как запрограммировать пакетное внесение изменений в файлы темы WordPress.
Один раз запрограммированный пакет исправлений и дополнений позволяет в будущем:
- восстановить изменения в файлах темы WordPress при ее обновлении
- перенести изменения в другую тему
- вести несколько вариантов изменений
Дочерние темы или правка файлов
Обычно в файлы темы, например, в такие файлы, как style.css
, functions.php
, header.php
, footer.php
вносятся изменения для настройки внешнего вида или добавления новых возможностей. Но, поскольку при обновлении версии темы обновляются и её файлы, то сделанные изменения при этом теряются.
Разработчики WordPress ввели для этого специальный вид тем — дочерние темы.
Дочерняя тема WordPress — это тема, которая расширяет функционал другой темы, называемой родительской темой, и позволяет вам изменять или дополнять функционал родительской темы.
Подробнее о создании и настройке дочерней темы можно прочитать в документации WordPress по ссылке Дочерние темы.
В тех случаях, когда дочерние темы не используются, а изменения вносятся путем редактированием файлов темы, можно запрограммировать пакетное внесение изменений файлов, которое потом можно повторно использовать в любой момент.
Кроме того, некоторые изменения проще внести редактированием файла style.css
рабочей темы, чем созданием дочерней темы.
- например, одинаковую смену шрифта у большого количества элементов
Запрограммировать пакетные изменения, то есть внесение нескольких изменений одним действием, можно с помощью программы nhrt.
Бесплатная консольная программа nhrt (nhutils replace text выполняет замену и вставку текста в файлах, с поддержкой регулярных выражений. Программа работает из командной строки Windows и может быть использована в пакетных файлах.
Изменение шрифта темы WordPress в bat файле
Этот пример показывает, как решить проблему шрифта в теме Spacious, применяемой в данный момент на этом сайте. Тема Spacious использует по умолчанию шрифт Lato, не имеющий поддержки кириллицы, поэтому английские символы показываются шрифтом Lato, а вместо русских букв подставляется Arial, то есть два шрифта смешиваются.
Чтобы указать использование вместо Lato другого шрифта с поддержкой кириллицы, например, Open Sans, необходимо:
- зарегистрировать шрифт Open Sans в файле
functions.php
- заменить Lato на Open Sans в файле
style.css
Регистрация шрифта в файле functions.php
Регистрации шрифта Open Sans с поддержкой кириллицы осуществляется добавлением в inc/functions.php следующей строки:
wp_register_style( 'google_fonts', '//fonts.googleapis.com/css?family=Open+Sans:300i,400,400i,700&subset=cyrillic' );
В программе nhrt это делается командой:
nhrt -insert_after -spt:"wp_register_style( 'google_fonts', '//fonts.googleapis.com/css?family=Lato' );" -et:"\n\twp_register_style( 'google_fonts', '//fonts.googleapis.com/css?family=Open+Sans:300i,400,400i,700&subset=cyrillic' );" -cp:utf8 -o:d -notitle inc\functions.php
Добавление указывается параметром -insert_after, который вставляет новый текст после найденного. Если нет необходимости сохранять в файле строку регистрации старого шрифта Lato, можно делать замену текста вместо вставки, просто убрав параметр insert_after.
Текст для поиска задается параметром -spt.
Текст для вставки, то есть строка регистрации шрифта Open Sans задается параметром -et, в тексте также добавлены символы перевода строки.
Замена шрифта в файле style.css
Смена шрифта делается обычной заменой текста -spt / -t:
nhrt -spt:"'Lato'" -t:"'Open Sans'" -cp:utf8 -o:d -notitle style.css
После выполнения команды все вхождения 'Lato'
будут заменены на 'Open Sans'
.
Итоговый командный файл
Bat файл для смены шрифта включает рассмотренные выше команды.
Чтобы предотвратить повторное добавление строк, проверяется код возврата первой команды – работа завершается, если не найдено вхождение 'Lato'
.
nhrt -spt:"'Lato'" -t:"'Open Sans'" -cp:utf8 -o:d -notitle style.css || exit /b 0 nhrt -insert_after -spt:"wp_register_style( 'google_fonts', '//fonts.googleapis.com/css?family=Lato' );" -et:"\n\twp_register_style( 'google_fonts', '//fonts.googleapis.com/css?family=Open+Sans:300i,400,400i,700&subset=cyrillic' );" -cp:utf8 -o:d -notitle inc\functions.php
Естественно, в этот bat файл можно вставлять и другие команды для добавления новых возможностей на сайт, и тогда запуск одного bat файла будет вносить весь необходимый пакет изменений.
Узнать больше
Страница программы nhrt — /blog/nhrt/ с описанием.
Справка по программе nhrt — /blog/nhrt/help/
Благодарю еще раз за программу и труд по ее написанию и обновлени.
Моя задача почти такая же как, описана в теме выше, только для Joomla и внесение изменений в код расширения для поиска и замены (добавления) языковых фраз.
После обновления расширения Разработчиками, при запуске пакетного изменения файлов по списку поиска-замен, нужно точно знать сколько успешно выполнено. Чтобы вовремя заметить, что Разработчики, наконец-то обратили своё внимание на вопросы и предложения на своём форуме поддержки и внесли изменения в код. И пакетное изменение каких-то строк может стать лишним, а то и «опасным». Бываю и более веселые замены после таких изменений.
Благодарю.