Intereting Posts
Загрузите файлы мультимедиа в Amazon S3 Использование субдомена для загрузки медиа / изображений и т. Д. В 2 разных блогах Как добавить виджеты нижнего колонтитула в тему StudioPress Monochrome Pro? Template Tag "template_directory" потянув неправильный путь Разместить произвольный пост-тип случайным образом в упорядоченном запросе the_content страницы шаблона Как получить полный размер URL-адреса вложения WordPress Page Reload Выполняется навсегда при разработке темы Сохраняйте данные в списке выбора после нажатия кнопки «Сохранить». Получить ссылку автора WordPress по ID Кодировка символов для wp_options wp_enqueue_script работает только за пределами действия Фильтровать по другому таксономическому термину в архиве таксономии Если новый комментарий отправлен в пользовательском почтовом отправлении для отправки по электронной почте из настраиваемого поля Может ли WordPress использоваться / расширяться как сайт электронной коммерции среднего размера?

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

Я хочу разрешить пользователям загружать пользовательские файлы в конкретный каталог плагинов. Проблема заключается, очевидно, в том, что 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, скорее всего, не удастся для этого каталога.

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