Как предотвратить обновление плагинов для плагинов?

Как я могу предотвратить обновление моих обновлений плагина от пользовательских прав и дополнений к файлам в определенном подкаталоге моего плагина?

Я написал плагин подсветки синтаксиса, который использует GeSHi. Подпапка плагина – сама GeSHi. Многие пользователи захотят настроить / редактировать языковые файлы в GeSHi.

В частности, это структура каталогов:

  • сор-Contente / плагины / мой-плагин /
    • несколько подкаталогов и т. д.
  • WP-содержание / плагины / мой-плагин / Geshi / Geshi /
    • пользователи собираются добавлять файлы в этот каталог
    • они также будут редактировать файлы в этом каталоге
    • когда они собирают свои новые обновления, я не хочу стереть их изменения

Каков наилучший способ решения этого?

Благодаря!


Вот что я думал, но я не знаю, как реализовать:

  1. На шаге действия плагина обновления (?) Создайте временную копию файлов, которые я хочу сохранить.
  2. Получите новую версию unzip и установите, как обычно.
  3. Скопируйте сохраненные файлы из временной копии в новую версию
  4. Удалить временную копию

В идеале это все будет сделано с файлами, но в худшем случае я мог бы сохранить данные в БД.

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

Solutions Collecting From Web of "Как предотвратить обновление плагинов для плагинов?"

Не позволяйте своим пользователям добавлять файлы или редактировать файлы.

Вместо этого используйте такие вещи, как do_action и apply_filters как это делает ядро ​​WordPress.

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

 $file_path = apply_filters( 'yourplugin_name_geshi_path', $file_path, $lanuage ); 

Затем пользователи могут подключиться к нему и изменить путь к файлу соответственно …

 <?php add_filter( 'yourplugin_name_geshi_path', 'wpse27248_path_modify', 10, 2 ); function wpse27248_path_modify( $path, $language ) { if( 'some_language' = $language ) { $path = '/some/new/path'; } return $path; } 

Лучше всего создать подкласс GeSHi, изменить методы, которые вам нужно изменить (как предложено), и использовать этот класс для своего плагина. Если обновления GeSHi, вы можете отказаться от новой версии, не теряя своих изменений.

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

Обычно WordPress рекомендует использовать папку uploads. Любое обновление плагина всегда будет перезаписывать все, что находится в папке плагина.

У меня есть мои плагины, которые создают подпапку под загрузкой, в которой хранятся все доступные для редактирования материалы. Таким образом, это безопасно как с обновлениями wp, так и с плагинами / темами.

Пока языки, мой плагин проверяет, есть ли пользовательский языковой файл в uploads / subfolder. Если нет, то он загружает из папки языка плагинов последнюю версию языка по умолчанию.

Почему бы не использовать программное обеспечение для управления версиями и не позволить каждому вносить свой вклад в свою отрасль? В определенный момент вы можете просто свернуть эти ветки в основное репозиторию плагинов.