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

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

Тема в разделе "Общее для WordPress", создана пользователем Tanhuxa, 19 янв 2016.

  1. Tanhuxa

    Tanhuxa

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

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

    D&B Администратор Команда форума Местный

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

    Stork.71 Местный

    Сообщения:
    1.033
    Симпатии:
    254
    Баллы:
    83
    Пользуюсь дочерней темой, пока все нормально. С ее помощью реализую и доработки в коде (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, но я его пока не опробовал.
     
    • Нравится Нравится x 2
    • Согласен Согласен x 1
  4. Tanhuxa

    Tanhuxa

    Сообщения:
    86
    Симпатии:
    6
    Баллы:
    8
    Похоже, я из последних :D
     
    • Нравится Нравится x 1
  5. Tanhuxa

    Tanhuxa

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

    searchingman Местный

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

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    Эти советы правильные, но только для пользователя (опытного пользователя).

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

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

    ADv Местный

    Сообщения:
    429
    Симпатии:
    108
    Баллы:
    43
    Топик почти подходит под мой вопрос:
    как правильно ковырять переводы (.po), когда автор добавляет новые строки.

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

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

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

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

    D&B Администратор Команда форума Местный

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

    Image 22.jpg
     
    • Нравится Нравится x 1
  10. ADv

    ADv Местный

    Сообщения:
    429
    Симпатии:
    108
    Баллы:
    43
    Вот я слепой. БЛАГОДАРЮ!
     
  11. Tanhuxa

    Tanhuxa

    Сообщения:
    86
    Симпатии:
    6
    Баллы:
    8
    Да, я понимаю это. А если созданную мной дочернюю тему не обновлять, когда выходит новая версия WP? Не будет работать?
     
  12. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    Почему не будет?
    Ведь ее Вы сами создавали. Значит понимаете что и зачем изменяли по сравнению с родительской темой и в случае необходимости ( в крайнем случае) сможете ее поправить.
     
  13. gregoro

    gregoro

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

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

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

    В Кодексе вордпресса кстати метод @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 я не понимаю совсем(
     
  14. gregoro

    gregoro

    Сообщения:
    136
    Симпатии:
    9
    Баллы:
    18
    В первобытное состояние скатываться перестало)
    Нашел в самой теме импорт/экспорт настроек. Он помог.
    Теперь дочерняя выглядит также как родительская.

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

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

    rikitiki Местный

    Сообщения:
    749
    Симпатии:
    184
    Баллы:
    43
    А зачем их импортировать? Пишите свой код в сustom.css темы или плагина.
     
  16. gregoro

    gregoro

    Сообщения:
    136
    Симпатии:
    9
    Баллы:
    18
    Не работает! В том-то и дело...(

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

    В родительской теме у меня много css файлов. Вот столько: [​IMG]
    Это кроме основного 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, то получаю следующий фокус
    [​IMG]

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

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

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

    rikitiki Местный

    Сообщения:
    749
    Симпатии:
    184
    Баллы:
    43
    Попробуйте через плагин Simple Custom CSS изменения вносить.
     
  18. Stork.71

    Stork.71 Местный

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