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

Как редактировать плагин WordPress, чтоб при его обновлении изменения не потерялись

Как редактировать плагин WordPress, чтоб при его обновлении изменения не потерялись

- этот вопрос часто задают новички в WordPress.

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

Ниже советы подходят и для WordPress темы (но не будет рассмотрен процесс создания дочерней темы - об этом читайте на сайте WP-Kama) и для дополнений к WP-Recall. Т.е. расширять вы можете весь вордпресс.

Запомни:

Важно усвоить простое правило - ядро (файлы) плагина править напрямую нельзя.
Но у себя воздействовать - можно.

Disclaimer:

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

Содержание:

  1. Стили (он же "внешний вид" или css)
  2. Правки перевода
  3. PHP файлы
  4. Шаблоны или templates
  5. Экшены
  6. js-файлы

Определимся - что вы подразумеваете под "редактированием":

1. Стили (он же "внешний вид" или css)

1.1 - Если css файлы вы хотите редактировать - их редактировать напрямую нельзя. Только переопределять. т.е. если есть класс .some в плагине - то вы у себя в подвале подключайте свой css файл, а стиль для .some переносите и пишете там.

Отличный видеоурок я опубликовал в 4-х серийном видео. Посмотрите 1-й урок, а остальные вы найдёте под записью в серии записей.

1.2 - Если правок в этом css файле вы наметили много - есть смысл дерегистрировать родной файл стилей и подключить свой с нужными стилями.
Дерегистрируется стиль через wp_dequeue_style() - описание найдёте здесь
А у плагина WP-Recall аналогичное поведение делает функция rcl_dequeue_style(). Почитать можете на форуме мой ответ по данной функции.

Disclaimer:

Запоминайте что делали - т.к. отключая стили у целого модуля вы должны понимать что вам эти изменения и актуализировать внешний вид придется самостоятельно. Например в большом обновлении автор плагина может обновить стили модуля - а у вас их нет. Эти риски вы должны понимать.
Это замечание действительно ко всем вариантам с дерегистрацией чего либо.

1.3 - Но стили бывают встроенные в html страницу - inline. Там вам потребуется перевесить через !important.
А если вы хотите все или почти все инлайн стили переопределить - то достаточно найти функцию, что их подключает и дерегистрировать её. На основе этой функции написать свою и заинлайнить (если так нужно) или же прямиком в свой css файл внести корректировки.

Я на CodeSeller описывал в статье: Как найти нужный фрагмент кода в плагине или шаблоне - советую ознакомиться.

Ну и про правки CSS и вставку сниппетов было подробное руководство: Куда мне вставить этот код? (и стили)


2. Правки перевода

Если вы говорите о правке перевода (например вам нужно переименовать слово "Группа" на "Сообщество"), а у автора плагина строки переведены через __() и похожие функции локализации - то воспользуйтесь плагинами интернационализации (переводов), или ВП фильтром gettext - на WP-Kama отличное руководство.

На CodeSeller я публиковал видеоурок: Переводим/переименовываем нужные строки WP-Recall и WordPress и дополнений - используя плагин SayWhat.

Что делать если локализация в плагине не заложена?
- попросить автора плагина добавить туда локализацию. Как правило идут навстречу и добавляют - т.к. это напрямую влияет на удобство и популярность плагина.
А почему её сразу не было? Экономия времени - когда нужно быстро стартануть. Этакое правило 20/80. Ведь перевод могут попросить добавить и через год - так что нет ничего страшного - общайтесь с разработчиком 🙂


3. PHP файлы

Если ваше изменение затрагивает php файлы, то поинтересуйтесь у автора - есть ли в том месте, где вы хотите поменять, фильтр.

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

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


4. Шаблоны или templates

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

Такой функционал имеют многие плагины: WP-Recall, bbPress, woocommerce. Суть их такова - что вы переносите файл шаблона (например cart.php) в свою тему или внутри папки wp-uploads (каждый плаг по своему реализует) и плагин вначале проверяет наличие такого файла вне своей папки, а потом, если не нашел там, подключает из своей папки. Так вы можете всю нужную верстку и внешний вид под себя переделать.


5. Экшены

Много функций внутри плагина висит на хуках (add_action) - например так:

add_action('some_action', 'some_function', 20);

где 20 - приоритет выполнения. Так вы можете всю функцию дерегистрировать через remove_action
Например так:

remove_action('some_action', 'some_function', 20);

- приоритет 20 обязательно такой как и при регистрации.
и потом всю функцию из плагина копируйте к себе (переименуйте только на уникальное имя или добавьте префикс) и вешайте на этот же хук и приоритет. Внутри функции уже делайте как вам надо - изменяйте.
Но этот способ самый зависимый - т.к. вам нужно следить - вдруг в обновлении автор в этой функции внес изменения или устранил уязвимость. Следите через svn или гит.


6. js-файлы

Возможно вам что-то нужно поменять в js функции. Тогда стоит уточнить у автора плагина как это сделать наименее безболезненно.

Например в WP-Recall есть функционал js-хуков и фильтров и некоторые участки кода передают в js-фильтр свои данные которые можно изменить из другого js-файла.

Посмотрите эти 2 руководства:
Введение в javascript-хуки и фильтры WP-Recall
js экшены и фильтры WP-Recall. Практическое применение


Так что варианты есть. А если их еще в плагине нет - попросите автора плагина добавить такую возможность. Если автор плагина не пойдет на встречу - не юзайте такой плагин. Там нет будущего. Большинство программистов понимает что ситуаций много и помогают и внедряют и подсказывают если есть еще способы влияния на нужный участок.

⚙ Удачной вам кастомизации!

Комментариев нет

Оставьте комментарий

Авторизация
*
*
Регистрация
*
*
*
Настоящим подтверждаю, что я ознакомлен и согласен с условиями политики конфиденциальности
Генерация пароля
Закрыть