Intereting Posts
Пользовательский тип сообщения. Текущий элемент меню, не применяемый к странице пользовательского типа сообщений. Как добавить многозначное изображение в мета-поле в редакторе сообщений? Проблемы с post_content при использовании wp_insert_post Хранить несколько метабоксов в пользовательский тип сообщения Рекомендуемый метод обновления / добавления меню при добавлении новой темы Не могу понять $ atts в функциях? На главной странице должна отображаться только одна категория сообщений, включая липкий пост с настраиваемым почтовым ящиком Как перевести «$ before» с получением текста в get_the_term_list? wordpress4.8.2 Многоязычный плагин Расширить параметры экрана Как подготовить get_date () для SimplePie_Item для l10n? Пользовательские сообщения об ошибках плагина WordPress Form не работают Pre_Get_Posts заказ DESC не регистрируется Заказ по нескольким мета-ключам и метазначению Как вы используете отображаемый образ последнего сообщения в категории в качестве фонового изображения

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

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

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