Intereting Posts
Автоматическое добавление дочерних страниц в подменю Добавление строки текста в php-код WP_Query Attachment добавляет дополнительное количество подключений и необходимо связать вложение с адресом URL Иерархия шаблонов для get_header () Отключить комментарии и pingbacks на старых пользовательских типах сообщений показать список последних комментариев для каждого сообщения в цикле Сортировка популярных сообщений по просмотрам за последнюю неделю как получить значения db без использования цикла с помощью wpdb-> get_results () Запросить комментарии с непустым значением 'author_url' на экране комментариев администратора сайт по-прежнему находится в локальном хосте Запрос из нескольких категорий (и) отображение подключенного пользователя для публикации Как контролировать порядок таксономии custum? Почему моя тема случайно удаляет теги <p> Печатать URL-адрес по умолчанию

Предотвратить удаление плагинов важных каталогов

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

Я думаю, что upgrader_pre_install и upgrader_post_install могут быть полезны, но, к сожалению, до сих пор мне не удалось найти какую-либо информацию, которая мне помогла.

По вашему мнению, могут ли эти крючки использоваться для сохранения каталога, и если да, то каким образом? Должен ли я просто скопировать каталог в другом месте, например, в папку uploads, и скопировать его с помощью upgrader_post_install ? Какая была бы лучшая практика?

благодаря

Solutions Collecting From Web of "Предотвратить удаление плагинов важных каталогов"

Чтобы ответить на мой собственный вопрос, вот что я нашел ради ответа на вопросы. Это делается для копирования важного каталога перед обновлением и восстановления после обновления:

 function my_dir_copy($source, $dest) { if (is_link($source)) { return symlink(readlink($source), $dest); } if (is_file($source)) { return copy($source, $dest); } if (!is_dir($dest)) { mkdir($dest); } $dir = dir($source); while (false !== $entry = $dir->read()) { if ($entry == '.' || $entry == '..') { continue; } my_dir_copy("$source/$entry", "$dest/$entry"); } $dir->close(); return true; } function my_dir_rmdirr($dirname) { if (!file_exists($dirname)) { return false; } if (is_file($dirname)) { return unlink($dirname); } $dir = dir($dirname); while (false !== $entry = $dir->read()) { if ($entry == '.' || $entry == '..') { continue; } rmdirr(“$dirname/$entry”); } $dir->close(); return rmdir($dirname); } function my_dir_backup() { $to = dirname(__FILE__)."/../igr_backup/"; $from = dirname(__FILE__)."/whatever_directory_you_preserve/"; my_dir_copy($from, $to); } function my_dir_recover() { $from = dirname(__FILE__)."/../igr_backup/"; $to = dirname(__FILE__)."/whatever_directory_you_preserve/"; my_dir_copy($from, $to); if (is_dir($from)) { my_dir_rmdirr($from); } } add_filter('upgrader_pre_install', 'my_dir_backup', 10, 2); add_filter('upgrader_post_install', 'my_dir_recover', 10, 2); 

Каталог плагинов не может использоваться для загрузки:

  1. Возможно, у вас нет доступа для записи.
  2. Он будет удален при обновлении плагинов, как вы только что узнали.
  3. Необходимые настройки CDN, скорее всего, не удастся для этого каталога.

Используйте каталог загрузок для загрузки. Это единственное безопасное место.
См. Также: Как предотвратить появление определенных файлов плагинов или подпапок в списке «файлы плагинов» с соответствующей проблемой – и такое же решение.