Intereting Posts
Где подходящее место для добавления фильтра для pre_get_table_charset? Включить файлы в functions.php Мое меню WordPress, основанное на загрузке Twitter, создает пункт меню, а не элемент страницы Почему по умолчанию скорость входа в систему не ограничена? Ошибка wp_handle_upload «Указанный файл с ошибкой при загрузке», но все же создает вложение? Как перечислить список категорий в поле выбора ACF Pro, чтобы выбрать из Обманчивое предупреждение о месте на моем сайте WordPress не может видеть содержимое пользовательского сообщения, отфильтрованное под фильтром «мой» в панели администратора Обновление таксономии сообщений, автоматически основанных на дате теги shortcode не работают в do_shortcode Критическая ошибка на заключительном этапе запуска веб-сайта – URL-адреса BROKEN! Запросы пользовательского типа WordPress Как настроить сопоставление доменов WordPress на MAMP Pro Случайная удаленная часть active_plugins таблицы DB wp_options Передача переменной в ловушки и фильтр

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

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

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

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

благодаря

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

 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, скорее всего, не удастся для этого каталога.

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