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

Сохранение внесенных изменений в код плагинов при их обновлении

Тема в разделе "Ищу плагин, функционал", создана пользователем Ataboy, 19 апр 2015.

  1. Ataboy

    Ataboy

    Сообщения:
    12
    Симпатии:
    3
    Баллы:
    3
    Приветствую!

    Собственно вопрос озвучен в заголовке топика. Как это достигается в WooCommerce, мы знаем. Сразу после установки Woo обычно копируют содержимое wp-content/plugins/woocommerce/templates в папку с темой.

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

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

    Ведь в Woo это как-то реализовано. У кого есть подобный опыт ?
     
  2. Stork.71

    Stork.71 Местный

    Сообщения:
    1.032
    Симпатии:
    254
    Баллы:
    83
    Вопрос интересный!
    скорее всего никак :(
    Почему? Потому что как правило плагин состоит из нескольких файлов всего, и изменения при обновлении затрагивают хотя бы один из них. То есть как правило это бессмысленно.
    Для woocommerce точно так же. По сути, можно сохранить только шаблоны, которые могут определяться и самим woocommerce, и темами, и дочерними темами.
    Хотя, насколько мне помнится, дочерняя тема "подменяет" любые файлы php - хоть плагинов, хоть тем, хоть wordpress. Только нужно сохранить иерархию папок (кажется :) ). Поищите больше про дочерние темы.
     
    • Согласен Согласен x 1
  3. ADv

    ADv Местный

    Сообщения:
    429
    Симпатии:
    108
    Баллы:
    43
    Я храню измененные файлы локально, после вынудженного обновления плагина синхронизирую изменения.
    Меня больше волнует другой вопрос: перевел я плагин на рус, закинул языковой файл. При обновлении через админку - скачивается авторский ланг-пак , а мои пару файлов - вытираются.
     
  4. Ataboy

    Ataboy

    Сообщения:
    12
    Симпатии:
    3
    Баллы:
    3
    А смотрите, как же тогда папка template, которую переносят в тему, переименовывают в woocommerce и там находятся все группы файлов, отвечающие за функционал магазина:
    - cart
    - checkout
    - myaccount
    - emails
    - orders

    и т.д.

    То есть я вношу туда любые изменения, могу переписать код, кастомизировать все желаемые функции под себя.

    В итоге эти файлы загружаются В ДОПОЛНЕНИЕ к родным и обновляемым файлам Woo.

    А вот css-файл woocommerce.css, перенесенный в папку с темой наоборот ЗАМЕНЯЕТ собой родной файл стилей.



    Рассмотрим теперь принцип создания родительских тем в вордпресе.

    Стили родительской темы задаются подобной конструкцией:

    Код:
    /*
    
    Theme Name: Twenty Ten Child
    Description: Дочерняя тема для темы Twenty Ten
    Author: Ваше имя
    Template: twentyten
    */
    
    @import url("../twentyten/style.css");
    
    #site-title a {
        color: #009900;
    }
    Template: объявляет родительскую тему, т.е. название папки родительской темы в правильном регистре.

    Отличие функционала Woo от функционала вордпресса в том, что это где-то прописано в ядре Woo, в стилях не нужно указывать вышеупомянутые настройки, файл пользовательских стилей просто помещают в папку с темой.

    Далее. Файл functions.php из дочерней темы загружается первым по к отношению родительской теме.

    Шаблоны, такие как index.php, page.php и прочие ведут себя аналогично стилям, т.е. заменяют собой файлы родительской темы.

    Шаблоны, которых нет в родительской теме, то бишь созданные пользователем, подключаются через
    Код:
    require_once
    Возможно я что-то не так делаю, но файлы плагинов не хотят подключаться из родительской или дочерней темы через require_once.

    Как бы это сделали Вы ? Если можно, пример кода.


    Так вот теперь главный вопрос. Где в ядре Woo находится код, ответственный за вышеперечисленные возможности ?

    Ведь по сути в Woo реализованы возможности родительских тем вордпресса, а так как Woo - плагин, соответственно данный функционал можно скопировать и прикрутить к любому плагину.

    Взять к примеру Affiliates, плагин партнерской програмы.

    Я хочу точно так же, как в случае с Woo, скопировать его файлы в папку с родительской темой, поскольку во многие вносил изменения. Но для того чтобы они подгружались первыми, да и вообще подгружались, нужен код, который это сделает.

    Просьба к опытным товарищам, отзовитесь!
     
    Последнее редактирование: 20 апр 2015
  5. Ataboy

    Ataboy

    Сообщения:
    12
    Симпатии:
    3
    Баллы:
    3
    Вобщем решение найдено!

    Берете файлы плагинов, в которые вносили изменения. Копируете их в папку с дочерней темой. Затем в functions.php дочерней темы прописываете следующие конструкции:

    Код:
    include( plugin_dir_path( __FILE__ ) . 'файл плагина.php');
    У меня все заработало. Как проверил ? Установил старую версию плагина. В дочерней теме сложил заранее скопированные кастомизированные файлы. И они же были в директории плагина wp-content/plugins/мой плагин . Затем обновил плагин. Изменения в его ядре потерлись. Но мои кастомизированные файлы подключаются, как и положено, в порядке приоритета из дочерней темы.
     
    Последнее редактирование: 21 апр 2015
    • Нравится Нравится x 3