• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Как правильно ковырять код - все точки над I

Tanhuxa

Форумчанин
Приветствую!
Эта тема уже неоднократно затрагивалась, но решения так и не было найдено, судя по всему.
Когда после очередного обновления WP, плагина или темы, долгими зимними ночами пытаешься вспомнить и восстановить то, что ранее напилила в коде, задаешься вопросом: как можно было этого избежать?!
1. Делаешь изменения в коде - после очередного обновления все изменения удаляются и ты начинаешь работу заново;
2. Создаешь дочернюю тему и вносишь изменения туда - пролетаешь с обновлениями и с опаской глядишь на новые версии WP.
Вот я и вопрошаю более опытных коллег: ЧТО ДЕЛАТЬ?!
Успешные и не совсем кейсы приветствуются!
Этот вопрос по-прежнему актуален, или я что-то пропустила?

С Woo более-менее все понятно. Измененные файлы PHP сохраняешь в папку темы с сохранением иерархии папок в Woo. А что с CSS делать?!
 

D&B

Администратор
Команда форума
Местный
  1. Использовать плагины типа Simple Custom CSS. Это позволит не терять изменения во многих случаях.
  2. Использовать поля Custom CSS в настройках тем. Для этого, как правило, нужно иметь нормальную премиум тему.
  3. Использовать авторские дочерние темы. Во многих случаях авторы качественных тем кроме оригинала темы предлагают уже готовые варианты дочерних тем. И да, для этого, опять же, нужно иметь нормальную премиум тему.
  4. "Я специалист" - трогать код, писать самому полезные плагины и выкладывать или продавать тут на радость пользователям форума.
  5. "Я не специалист" - не трогать код и использовать только готовые решения. В поиске оных мы всегда стараемся помочь по мере сил.
  6. "Я не специалист, но мне надо" - заказывать готовые решения у специалистов или ковырять код самому и потом спрашивать - ШЕФ, ВСЕ ПРОПАЛО! ЧТО ДЕЛАТЬ?
 
Последнее редактирование:

Stork.71

Гуру
Местный
Пользуюсь дочерней темой, пока все нормально. С ее помощью реализую и доработки в коде (functions.php), и переопределяю шаблоны (templates), и изменения в стили. Причем стили и темы, и плагинов (например, плагин woocommere Grid-List создает свои стили, но мне их надо немного подправить).

Как это делается. В папке дочерней темы создается style.css, который переопределяет родные стили темы. В него надо импортировать родные стили. Выглядит он так:
HTML:
/*
Theme Name:  Wootique Child
Description:  Дочерняя тема для темы Wootique, под AKIP-DON
Author:  Stork
Template:  wootique
Version:  0.1.0
*/

@import url("../wootique/style.css");

Дальше можно ниже записывать свои свойства. Но я на всякий случай пользуюсь custom.css, созданным там же. Это в принципе изначальная фишка темы wootique (но скорее всего и всех остальных тем от woo тоже), он сразу говорят не трогать style.css a менять все в custom.css. В итоге, мой custom.css из дочерней темы грузится после всего - в том числе после стилей всех плагинов - переопределяя всё подряд.
custom.css правлю прямо из админки WordPress через Редактор (удобнее - с плагинами advanced code editor или WP editor). Иногда удобнее - через FTP и notepad++.

Единственное, с чем остается гемор - это переводы. Пока решение - файлик переводы.txt и каждый раз ручками - благо обновляюсь нечасто. В обсуждении про дочерние темы есть интересное решение от searchingman, но я его пока не опробовал.
 

Tanhuxa

Форумчанин
  1. Использовать плагины типа Simple Custom CSS. Это позволит не терять изменения во многих случаях.
  2. Использовать поля Custom CSS в настройках тем. Для этого, как правило, нужно иметь нормальную премиум тему.
  3. Использовать авторские дочерние темы. Во многих случаях авторы качественных тем кроме оригинала темы предлагают уже готовые варианты дочерних тем. И да, для этого, опять же, нужно иметь нормальную премиум тему.
  4. "Я специалист" - трогать код, писать самому полезные плагины и выкладывать или продавать тут на радость пользователям форума.
  5. "Я не специалист" - не трогать код и использовать только готовые решения. В поиске оных мы всегда стараемся помочь по мере сил.
  6. "Я не специалист, но мне надо" - заказывать готовые решения у специалистов или ковырять код самому и потом спрашивать - ШЕФ, ВСЕ ПРОПАЛО! ЧТО ДЕЛАТЬ?
Похоже, я из последних :D
 

Tanhuxa

Форумчанин
Пользуюсь дочерней темой, пока все нормально. С ее помощью реализую и доработки в коде (functions.php), и переопределяю шаблоны (templates), и изменения в стили. Причем стили и темы, и плагинов (например, плагин woocommere Grid-List создает свои стили, но мне их надо немного подправить).

Как это делается. В папке дочерней темы создается style.css, который переопределяет родные стили темы. В него надо импортировать родные стили. Выглядит он так:
HTML:
/*
Theme Name:  Wootique Child
Description:  Дочерняя тема для темы Wootique, под AKIP-DON
Author:  Stork
Template:  wootique
Version:  0.1.0
*/

@import url("../wootique/style.css");

Дальше можно ниже записывать свои свойства. Но я на всякий случай пользуюсь custom.css, созданным там же. Это в принципе изначальная фишка темы wootique (но скорее всего и всех остальных тем от woo тоже), он сразу говорят не трогать style.css a менять все в custom.css. В итоге, мой custom.css из дочерней темы грузится после всего - в том числе после стилей всех плагинов - переопределяя всё подряд.
custom.css правлю прямо из админки WordPress через Редактор (удобнее - с плагинами advanced code editor или WP editor). Иногда удобнее - через FTP и notepad++.

Единственное, с чем остается гемор - это переводы. Пока решение - файлик переводы.txt и каждый раз ручками - благо обновляюсь нечасто. В обсуждении про дочерние темы есть интересное решение от searchingman, но я его пока не опробовал.
Много советов, надо осмыслить и поэкспериментировать. Но правильно ли я поняла суть?
Если нет, то создаешь дочернюю тему, в ней правишь PHP, создаешь custom.css и в нем правишь CSS из всех файлов .css (копируешь/добавляешь код)? А как быть, если надо что-то удалить? И как быть с обновлениями дочерней темы? Не обновлять?!
 

searchingman

Гуру
Местный
А как быть, если надо что-то удалить? И как быть с обновлениями дочерней темы? Не обновлять?!
Для *.php файлов удаляйте, для *.css сайтов переопределяйте стили.
И как быть с обновлениями дочерней темы? Не обновлять?!
Здесь под "дочерней" темой понимается не скачанная из репозитория Wordpress (или премиум тема), но ваша тема, созданная на основе основной из репозитория Wordpress.
Поэтому она не может обновятся откуда-то. Она обновляется вами по мере необходимости. ;)
 

searchingman

Гуру
Местный
Пользуюсь дочерней темой, пока все нормально. С ее помощью реализую и доработки в коде (functions.php), и переопределяю шаблоны (templates), и изменения в стили. Причем стили и темы, и плагинов (например, плагин woocommere Grid-List создает свои стили, но мне их надо немного подправить).

Как это делается. В папке дочерней темы создается style.css, который переопределяет родные стили темы. В него надо импортировать родные стили. Выглядит он так:
HTML:
/*
Theme Name:  Wootique Child
Description:  Дочерняя тема для темы Wootique, под AKIP-DON
Author:  Stork
Template:  wootique
Version:  0.1.0
*/

@import url("../wootique/style.css");

Дальше можно ниже записывать свои свойства. Но я на всякий случай пользуюсь custom.css, созданным там же. Это в принципе изначальная фишка темы wootique (но скорее всего и всех остальных тем от woo тоже), он сразу говорят не трогать style.css a менять все в custom.css. В итоге, мой custom.css из дочерней темы грузится после всего - в том числе после стилей всех плагинов - переопределяя всё подряд.
custom.css правлю прямо из админки WordPress через Редактор (удобнее - с плагинами advanced code editor или WP editor). Иногда удобнее - через FTP и notepad++.

Единственное, с чем остается гемор - это переводы. Пока решение - файлик переводы.txt и каждый раз ручками - благо обновляюсь нечасто. В обсуждении про дочерние темы есть интересное решение от searchingman, но я его пока не опробовал.
Эти советы правильные, но только для пользователя (опытного пользователя).

Для разработчика нет ничего лучше для контроля кода, чем система управления версиями, которая отвечает на самые главные вопросы:
1. Что у меня изменилось, т.е. в каких файлах и что конкретно в этих файлах?
2. Как быстро (мнгновенно) вернуться между текущим и предыдущим состоянием кода?
3. Как получить полную историю изменений не только между последними изменениями, но и всеми предыдущими. Как получить историю изменения конкретного файла?
4. Если проект изменяют несколько человек, то важно знать кто, когда и где сделал изменения в коде?

В последнее время наиболее популярная связка для этого Git + GitHub (или GitLab, или BitBucket).
 
Последнее редактирование:

ADv

Гуру
Местный
Топик почти подходит под мой вопрос:
как правильно ковырять переводы (.po), когда автор добавляет новые строки.

К примеру, был файл перевода на 100 строк. Я всё перевел, загрузил, всё ОК. Далее, автор выпускает обновление плагина/темы, где добавляет еще десяток строк. Как мне быть? Как не потерять переведенные 100 строк, и при этом добавить нужные 10?

Перевожу обычно через POedit. А описанную ситуацию решаю с помощью Total Commander, синхронизируя .po файлы, и построчно проверяю/добавляю строки.
Очень надеюсь, что это мой личный костыль, и люди придумали более рациональное решение.

Коммитить на гитхаб свои переводы (чтобы автор включал его в плагин) не предлагать: часто перевод затачиваю под "клиента", когда штуки нужно перевести как гвозди, например, и это не всем подойдет. Да и лень чаще всего :)

С премиум плагинами/темами вариант с коммитом также не подойдет.
 

D&B

Администратор
Команда форума
Местный
Топик почти подходит под мой вопрос:
как правильно ковырять переводы (.po), когда автор добавляет новые строки.

К примеру, был файл перевода на 100 строк. Я всё перевел, загрузил, всё ОК. Далее, автор выпускает обновление плагина/темы, где добавляет еще десяток строк. Как мне быть? Как не потерять переведенные 100 строк, и при этом добавить нужные 10?

Перевожу обычно через POedit. А описанную ситуацию решаю с помощью Total Commander, синхронизируя .po файлы, и построчно проверяю/добавляю строки.
Очень надеюсь, что это мой личный костыль, и люди придумали более рациональное решение.

Коммитить на гитхаб свои переводы (чтобы автор включал его в плагин) не предлагать: часто перевод затачиваю под "клиента", когда штуки нужно перевести как гвозди, например, и это не всем подойдет. Да и лень чаще всего :)

С премиум плагинами/темами вариант с коммитом также не подойдет.

Ну есть же в POEDIT кнопка "Обновить". Берете новые файлы темы или плагина. Кидаете туда свои старые файлы перевода. Открываете в POEDIT и к жмакаете "Обновить".

Image 22.jpg
 

Tanhuxa

Форумчанин
Для *.php файлов удаляйте, для *.css сайтов переопределяйте стили.

Здесь под "дочерней" темой понимается не скачанная из репозитория Wordpress (или премиум тема), но ваша тема, созданная на основе основной из репозитория Wordpress.
Поэтому она не может обновятся откуда-то. Она обновляется вами по мере необходимости. ;)
Для *.php файлов удаляйте, для *.css сайтов переопределяйте стили.

Здесь под "дочерней" темой понимается не скачанная из репозитория Wordpress (или премиум тема), но ваша тема, созданная на основе основной из репозитория Wordpress.
Поэтому она не может обновятся откуда-то. Она обновляется вами по мере необходимости. ;)
Да, я понимаю это. А если созданную мной дочернюю тему не обновлять, когда выходит новая версия WP? Не будет работать?
 

searchingman

Гуру
Местный
Да, я понимаю это. А если созданную мной дочернюю тему не обновлять, когда выходит новая версия WP? Не будет работать?
Почему не будет?
Ведь ее Вы сами создавали. Значит понимаете что и зачем изменяли по сравнению с родительской темой и в случае необходимости ( в крайнем случае) сможете ее поправить.
 

gregoro

Опытный
Вот и я задумался над этой темой((
Наковырял стили родной премиум-темы, а она обновилась и "усе пропало")) Благо бэкапы все есть...

Помогите мне плз разобраться...
Как правильно импортировать стили в дочернюю тему?
Про
Код:
@import url("../wootique/style.css");
я понял

Но фишка в том, что в моей премиум-теме с десяток .css файлов...
Их все импортировать нужно поименно?
b78e7a444866.png


В Кодексе вордпресса кстати метод @import больше не считается корректным. Вот здесь про это https://codex.wordpress.org/Child_Themes

Там через functions.php рекомендуется действовать.

И в моей премиум-теме уже была и дочерняя. В functions.php уже был код
Код:
<?php
add_action('wp_enqueue_scripts', 'wd_child_theme_add_scripts');
function wd_child_theme_add_scripts(){
    wp_register_style('parent-style', get_template_directory_uri().'/style.css');
    wp_enqueue_style('parent-style');
}
?>

Вот только съехало нахрен все и обратилось в первобытное состояние как я эту тему активировал...
В нем что-то не так? Кто понимает может?
В php я не понимаю совсем(
 

gregoro

Опытный
Вот только съехало нахрен все и обратилось в первобытное состояние как я эту тему активировал...
В первобытное состояние скатываться перестало)
Нашел в самой теме импорт/экспорт настроек. Он помог.
Теперь дочерняя выглядит также как родительская.

Но вот момент - не могу править ничего, кроме style.css
На правки в остальной код не реагирует...

Многие настройки лежат в файле родительской темы - /css/base.css
Понимаю что его надо подключить как-то видимо. Но в php ничего не понимаю( Научный тык пока пользы не принес(
 

gregoro

Опытный
Не работает! В том-то и дело...(

Давайте здесь полностью ситуацию опишу... Может кто увидит решение?

В родительской теме у меня много css файлов. Вот столько:
b78e7a444866.png

Это кроме основного style.css, который в корне темы лежит.

В моей премиум-теме уже лежала и дочерняя.
В ней было три файла. Скрин темы и два важных:

Style.css :
Код:
/*
Theme Name: WD OSWAD MARKET CHILD
Description: Child theme for the OswadMarket
Author: wpdance.com
Template: wp_oswad_market
*/

И functions.php :
Код:
<?php
add_action('wp_enqueue_scripts', 'wd_child_theme_add_scripts');
function wd_child_theme_add_scripts(){
    wp_register_style('parent-style', get_template_directory_uri().'/style.css');
    wp_enqueue_style('parent-style');
}
?>

Как видите директива @import не использована (что wordpress считает правильным, в англоязычном кодексе смотрел, там @import считают устаревшим способом).

И вот - тема реагирует ТОЛЬКО на изменения файла style.css в родительской теме!

Т.е. в дочерней я открываю style.css, копирую в него нужный абзац кода из родительского style.css и меняю его - все норм.

Если же, например, беру кусок кода из base.css (а в нем очень много настроек нужных) и копирую в дочерний style.css, то получаю следующий фокус
b069779dae00.png


Тут я специально жестко увеличил размер шрифта в ссылках. Текст везде 15 px, а ссылки я поставил 28px.

Браузер это правило видит, но в приоритет его не ставит (перечеркнуто оно). Стиль по-прежнему берется из родительской...

Вот и понимаю, что надо как-то прописать все остальные файлы видимо. А как - знаний не хватает. Разобраться в php за вечер почти невозможно( Особенно вообще не программисту)
 

Stork.71

Гуру
Местный
Тут вопрос с последовательностью загрузки стилей. Получается, что style.css дочерней темы грузится раньше, чем куча стилевых файлов родительской. И по какой-то причине, судя по всему, авторы темы считают, что эти куча файликов не должны меняться. Обхитрить их конечно можно. Я с подобной ситуацией сталкивался, и кажется сам создавал custom.css в дочерней теме, который подгружал в самом-самом-самом конце - тогда его ничто не перебивало. Сейчас не вспомню, надо порыться в архивах.
 
Сверху Снизу